in reply to umask when calling xterm from perl

system uses /bin/sh by default, not tcsh. How you deal with this depends on what else you want to accomplish in your shell/xterm. Do you actually want to run tcsh under system() instead?

Replies are listed 'Best First'.
Re^2: umask when calling xterm from perl
by Special_K (Pilgrim) on Apr 09, 2019 at 17:50 UTC

    Does umask only apply to tcsh and not to /bin/sh (or any other shell such as bash, zsh, etc.)? Does each shell have its own separate umask? UPDATE: If I open a terminal in linux, which defaults to tcsh, and type "umask", the result is 2. If I type any of the following commands to change my shell followed by "umask", the result is still 2:

    /bin/sh ksh zsh bash

    If all of these shells have the same umask when I call them manually, why does the umask get changed when perl calls a different shell (/bin/sh in this case)?

    For the purposes of this perl script it doesn't matter which shell gets called. If system() uses /bin/sh, what about qx or the backtick operator?

      If all of these shells have the same umask when I call them manually, why does the umask get changed when perl calls a different shell (/bin/sh in this case)?

      That is the key question. I'm unable to reproduce your findings regarding the different umasks but then our operating systems (and maybe shells and maybe perls) are probably quite different. I suggest that instead of fixing just on umask you look at the entire environment to determine what is being set/reset and hopefully by that method determine the cause. If umask turns out to be the only difference then that may point to a bug somewhere.

        Would the best way to do this be to just run "env" before calling the xterm and then within the new xterm, and then diff'ing the 2 results?