web-dev-qa-db-fra.com

bashrc ou bash_profile?

Je connais la différence entre les deux scripts de connexion bash:

.bashrc est exécuté uniquement par des shells "non-login".

.bash_profile (ou .bash_login ou .profile) est exécuté par des shells "login".

Quelqu'un a-t-il de bons exemples de choses qui conviennent mieux à une exécution en mode connexion uniquement, telles que je ne les mettrais que dans .bash_profile, mais elles n'auraient pas vraiment de sens dans .bashrc?

(Je sais que la plupart d'entre nous source .bashrc sur .bash_profile, donc il ne semble pas y avoir beaucoup de point dans la question opposée ...)

49
Don Faulkner

Etant donné que .bashrc est destiné aux shells non connectés, j’évite les commandes renvoyant à l’écran. J'ai également rencontré des expériences dans lesquelles les instructions echo dans .bashrc provoquent l'échec des commandes sftp et rsync (et peut-être aussi des commandes scp).

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

En outre, vous n'exécuterez généralement pas ssh-agent à partir d'un shell non interactif. J'ai donc ceci dans .bash_profile.

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

Byobu est un excellent exemple de quelque chose que vous ne devriez jamais mettre dans un .bashrc.

Sinon, il s'exécutera de manière récursive dans chacun de ses 'terminaux virtuels' ;-)

Vous pouvez l'essayer, c'est amusant.

C'est pourquoi vous le mettez dans .profile, de sorte que byobu (qui est vraiment un écran enveloppant) est chargé une seule fois au moment de la connexion. Et Byobu lui-même peut démarrer de nouvelles sessions de bash interactives.

8
Ralf