bashrc ou bash_profile?

47

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

.bashrc est uniquement exécuté 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 ce qui convient le mieux à une exécution par connexion uniquement, de sorte que je ne les mets que dans .bash_profile, mais cela n'aurait aucun sens dans .bashrc?

(Je connais la plupart des sources .bashrc de .bash_profile, donc il ne semble pas y avoir beaucoup de points dans la question opposée ...)

    
posée Don Faulkner 07.08.2010 - 04:14
la source

2 réponses

24

Puisqu'un fichier .bashrc est utilisé pour les shells non connectés, j'évite les commandes qui résonnent à l'écran. J'ai également rencontré des expériences où 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’utiliserez 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
    
réponse donnée Stefan Lasiewski 07.08.2010 - 06:20
la source
8

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

Sinon, il s'exécutera récursivement dans chacun de ses "terminaux virtuels" ;-) Vous pouvez l'essayer, c'est plutôt amusant.

C'est la raison pour laquelle vous l'avez mis dans .profile, donc byobu (qui est vraiment un wrapper juste autour de l'écran) n'est chargé qu'une seule fois, à la connexion. Et byobu lui-même peut lancer de nouvelles sessions interactives.

    
réponse donnée Ralf 06.09.2010 - 20:31
la source

Lire d'autres questions sur les étiquettes