Esta resposta é bash específica, outras shells têm características similares, mas desde que sua resposta mencionou .bashrc
, presumo que você esteja usando o Bash.
O que você está encontrando é que um shell pode ser chamado como um shell interativo ou de login.
-
bash -l
- login -
bash -i
- interativo
Se você olhar na página man do Bash na seção "INVOCATION", você notará os seguintes 2 comentários:
-
faça login
A login shell is one whose first character of argument zero is a -, or one started with the --login option.
-
interativo
An interactive shell is one started without non-option arguments and without the -c option whose standard input and error are both connected to terminals (as determined by isatty(3)), or one started with the -i option.
PS1 is set and $- includes i if bash is interactive, allowing a shell script or a startup file to test this state.
Interativo & As shells de login lêem os arquivos de configuração na seguinte ordem. Ele faz isso primeiro:
- / etc / profile
Seguido por um deles (que já encontra primeiro) nesta ordem:
- ~ / .bash_profile
- ~ / .bash_login
- ~ / .profile
Shells interativos (que não são shell de login) lêem um arquivo de configuração adicional, ~/.bashrc
. Observe que eles nunca leem o arquivo /etc/bashrc
config diretamente. Eles leem o arquivo ~/.bashrc
por causa desta sub-rotina:
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
Então, o que acontece com o umask
Para fazer com que os dois tipos de shells leiam o umask
, você precisa incluí-lo em um dos arquivos mencionados acima para ler os dois tipos de invocação do shell, então eu colocaria em /root/.bash_profile
.