it-swarm-eu.dev

bashrc oder bash_profile?

Ich kenne den Unterschied zwischen den beiden Bash-Anmeldeskripten:

.bashrc wird nur von "Nicht-Login" -Shells ausgeführt.

.bash_profile (oder .bash_login oder .profile) wird von "Login" -Shells ausgeführt.

Hat jemand ein paar gute Beispiele für Dinge, die besser für die reine Login-Ausführung geeignet sind, so dass ich sie nur in .bash_profile einfügen würde, aber sie würden in .bashrc keinen Sinn ergeben?

(Ich weiß, dass die meisten von uns .bashrc aus .bash_profile beziehen, daher scheint die entgegengesetzte Frage nicht viel Sinn zu haben ...)

49
Don Faulkner

Da ein .bashrc für nicht angemeldete Shells vorgesehen ist, vermeide ich alle Befehle, die auf dem Bildschirm erscheinen. Ich habe auch Erfahrungen gemacht, in denen echo-Anweisungen in .bashrc dazu führen, dass sftp- und rsync-Befehle fehlschlagen (und möglicherweise auch scp-Befehle).

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

Außerdem wird ssh-agent in der Regel nicht über eine nicht interaktive Shell ausgeführt. Also habe ich das in .bash_profile.

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

Byobu ist ein großartiges Beispiel für etwas, das Sie niemals in einen .bashrc einfügen sollten.

Andernfalls wird es rekursiv in jedem seiner virtuellen Terminals ausgeführt ;-)

Sie können es aber versuchen, es macht Spaß.

Das ist der Grund, warum Sie es in .profile einfügen, damit byobu (das eigentlich nur ein Wrapper um den Bildschirm ist) nur einmal beim Anmelden geladen wird. Und byobu selbst kann neue interaktive Bash-Sessions starten.

8
Ralf