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 ...)
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
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.