bashrc ou bash_profile?

47

Eu sei a diferença entre os dois scripts de login bash:

.bashrc é executado apenas por shells "não-login".

.bash_profile (ou .bash_login ou .profile) é executado por shells "login".

Alguém tem alguns bons exemplos de quais são as coisas que melhor se adaptam à execução somente de login, de modo que eu só os colocaria em .bash_profile, mas eles não fariam sentido em .bashrc?

(Eu sei que a maioria de nós usa o .bashrc de .bash_profile, então não parece haver muita razão para a pergunta oposta ...)

    
por Don Faulkner 07.08.2010 / 04:14

2 respostas

24

Como um .bashrc é para shells que não são de login, evito quaisquer comandos que ecoem na tela. Também encontrei experiências em que as instruções echo no .bashrc fazem com que os comandos sftp e rsync falhem (e talvez os comandos scp também).

# Print some information as we log in
# -s: OS Name -n: Node name -r: OS Release
uname -snr
uptime

Além disso, você geralmente não executará o ssh-agent a partir de um shell não interativo. Então eu tenho isso em .bash_profile.

if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi
    
por Stefan Lasiewski 07.08.2010 / 06:20
8

Byobu é um ótimo exemplo de algo que você nunca deveria colocar em um .bashrc.

Caso contrário, ele se executará recursivamente em cada um de seus 'terminais virtuais' ;-) Você pode tentar, é divertido.

É por isso que você o coloca no .profile, então o byobu (que realmente é apenas um wrapper na tela) é carregado apenas uma vez no momento do login. E o próprio byobu pode iniciar novas sessões de bash interativas.

    
por Ralf 06.09.2010 / 20:31