it-swarm.it

bashrc o bash_profile?

Conosco la differenza tra i due script di login bash:

.bashrc è eseguito solo da shell "non login".

.bash_profile (o .bash_login o .profile) viene eseguito da shell "login".

Qualcuno ha alcuni buoni esempi di quali sono le cose che si adattano meglio all'esecuzione di solo accesso, in modo che le inserissi solo in .bash_profile, ma non avrebbero davvero senso in .bashrc?

(Conosco la maggior parte di noi fonte .bashrc su .bash_profile, quindi non sembra avere molto senso nella domanda opposta ...)

49
Don Faulkner

Poiché un .bashrc è per shell senza login, evito qualsiasi comando che risuoni sullo schermo. Ho anche incontrato esperienze in cui le istruzioni echo in .bashrc causeranno il fallimento dei comandi sftp e rsync (e forse anche dei comandi scp).

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

Inoltre, generalmente non eseguirete ssh-agent da una shell non interattiva. Quindi ho questo in .bash_profile.

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

Byobu è un ottimo esempio di qualcosa che non dovresti mai inserire in un .bashrc.

Altrimenti, si eseguirà in modo ricorsivo in ciascuno dei suoi "terminali virtuali" ;-)

Puoi provarlo, è divertente.

Ecco perché lo metti in .profile, quindi byobu (che in realtà è solo un involucro attorno allo schermo) viene caricato solo una volta, al momento del login. E byobu stesso può iniziare nuove sessioni bash interattive.

8
Ralf