http://qs321.pair.com?node_id=1232360


in reply to Re: umask when calling xterm from perl
in thread umask when calling xterm from perl

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?

Replies are listed 'Best First'.
Re^3: umask when calling xterm from perl
by hippo (Bishop) on Apr 09, 2019 at 21:25 UTC
    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?

        Yes, that's what I would do. You'll probably have to sort before diff'ing as env itself rarely sorts the output.

Re^3: umask when calling xterm from perl
by Anonymous Monk on Apr 09, 2019 at 18:00 UTC