50 votes

bashrc ou bash_profile ?

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

.bashrc n'est exécuté que par les shells "non-login".

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

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

(Je sais que la plupart d'entre nous source .bashrc hors de .bash_profile Il n'y a donc pas lieu de poser la question inverse...)

26voto

Rytmis Points 15848

Étant donné qu'un .bashrc est pour les shells sans login, j'évite les commandes qui affichent un écho à l'écran. J'ai également rencontré des cas où les instructions echo dans les commandes .bashrc fera échouer les commandes sftp et rsync (et peut-être aussi les commandes scp).

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

En outre, vous ne lancerez généralement pas ssh-agent à partir d'un Shell non interactif. J'ai donc placé ceci dans .bash_profile .

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

9voto

Michael Sharek Points 3877

Byobu est un excellent exemple de ce qu'il ne faut jamais mettre dans une .bashrc .

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

Vous pouvez essayer, c'est assez amusant.

C'est pourquoi vous le mettez dans .profile Ainsi, byobu (qui n'est en fait qu'une enveloppe autour de screen) n'est chargé qu'une seule fois, au moment de l'ouverture de session. Et byobu lui-même peut démarrer de nouvelles sessions bash interactives.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X