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?
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--login
opçãoQuando o bash é chamado como um shell de logon interativo ou como um shell não interativo com a
--login
opçã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_login
e~/.profile
, nessa ordem, e lê e executa os comandos do primeiro que existe e é legível. A--noprofile
opçã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 -pf
em sua ps
saída, que inicia um shell de login por padrão.
Tente correr login -pf
e login -pfl
veja a diferença. man login
descreve a diferença:
-l
Informa 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).
man
citaecho $0
: se eu digitarecho $0
o terminal invocado porctrl + alt + f1
, o resultado será-bash
; mas se eu digitá-lo em termianl invocado porctrl + alt + t
, result ébash
(sem traço inicial). Você poderia explicar o porquê?--login
argumento, ele não altera o seuargv[0]
, mas age como um shell de login.