Se eu analisar a minha shell bash em um OS X (10.6.4) terminal, como por digitação echo $0, há um traço na frente da minha concha, como este: -bash. O que esse traço significa?
Se eu analisar a minha shell bash em um OS X (10.6.4) terminal, como por digitação echo $0, há um traço na frente da minha concha, como este: -bash. O que esse traço significa?
Respostas:
Isso significa que bashé chamado como um shell de logon.
man bash diz:
Um shell de login é aquele cujo primeiro caractere do argumento zero é a
-ou iniciou com a--loginopçãoQuando o bash é chamado como um shell de logon interativo ou como um shell não interativo com a
--loginopção, ele primeiro lê e executa comandos do arquivo/etc/profile, se esse arquivo existir. Depois de ler esse arquivo, ele procura~/.bash_profile,~/.bash_logine~/.profile, nessa ordem, e lê e executa os comandos do primeiro que existe e é legível. A--noprofileopção pode ser usada quando o shell é iniciado para inibir esse comportamento.Quando um shell de login sai, o bash lê e executa comandos do arquivo
~/.bash_logout, se existir.
Você encontrará login -pfem sua pssaída, que inicia um shell de login por padrão.
Tente correr login -pfe login -pflveja a diferença. man logindescreve a diferença:
-lInforma ao programa executado pelo logon que esta não é uma sessão de logon (por convenção, uma sessão de logon é sinalizada para o programa com um hífen como o primeiro caractereargv[0]; essa opção desativa isso) e impede que ele sejachdir(2)acessado no diretório inicial do usuário . O padrão é adicionar o hífen (esta é uma sessão de login).
echo $0: se eu digitar echo $0o terminal invocado por ctrl + alt + f1, o resultado será -bash; mas se eu digitá-lo em termianl invocado por ctrl + alt + t, result é bash(sem traço inicial). Você poderia explicar o porquê?
--loginargumento, ele não altera o seu argv[0], mas age como um shell de login.
mancita