it-swarm-pt.tech

bashrc ou bash_profile?

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 de "login".

Alguém tem alguns bons exemplos de quais são as coisas que melhor se adequam à 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 fonte .bashrc de .bash_profile, então não parece haver muito sentido na questão oposta ...)

49
Don Faulkner

Como .bashrc é para shells que não são de login, evito quaisquer comandos que ecoem na tela. Eu também encontrei experiências em que as instruções echo em .bashrc farão 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 de um Shell não interativo. Então eu tenho isso em .bash_profile.

if [ -f ~/.ssh/ssh-agent ]; then . ~/.ssh/ssh-agent; fi
24
Stefan Lasiewski

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

Caso contrário, ele será executado recursivamente em cada um dos seus 'terminais virtuais' ;-)

Você pode tentar, é divertido.

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

8
Ralf