Was bewirkt "Befehl als Anmeldeshell ausführen"?

28

Ich habe einige separate Programme installiert, von denen einige erfordern, dass ich in die Einstellungen meines GUI-Terminals gehe und die Option "Befehl als Anmeldeshell ausführen" aktiviere / deaktiviere, damit beide funktionieren.

Beispiel:

Ich habe Ruby on Rails installiert . Leider muss ich in die Terminaloptionen gehen und "Befehl als Anmeldeshell ausführen" aktivieren, damit er in meinem PFAD ist.

Dies war bis zur Installation von sexy-bash-prompt kein allzu großes Problem. Dies funktioniert nur, wenn die Option deaktiviert ist.

Meine Frage lautet also im Wesentlichen: Was bewirkt "Befehl als Anmeldeshell ausführen"? Gibt es eine Möglichkeit, die Dinge, die ausgeführt werden, wenn sie deaktiviert sind, auszuführen, wenn Sie als Anmeldeshell ausgeführt werden?

AlbertEngelB
quelle

Antworten:

31

Angenommen, Ihre Shell ist Bash (der Standard in Ubuntu), dann sind dies die Unterschiede:

  • Wenn Bash als Anmeldeshell ausgeführt wird, wird ~/.bash_profilees ~/.profilebeim Start gelesen (oder, falls dies nicht vorhanden ist, ). In einigen Fällen liest diese Datei ~/.bashrcauch.

  • Bei der Ausführung als Nicht-Login- Shell liest Bash ~/.bashrc.

Warum treten bei der Ausführung als Anmelde- / Nicht-Anmelde-Shell unterschiedliche Verhaltensweisen auf? Weil dein .bash_profile/ .profileandere Dinge tut als dein / dein .bashrc.

Die Lösung , die ich in Ihrem Fall empfehlen würde , ist zu kopieren , die Anpassungen vorgenommen .bash_profile/ .profile, fügen Sie sie in .bashrcund deaktivieren „Befehl Ausführen als Login - Shell“.

Andrea Corbellini
quelle
Ahh ok. Ich nahm an, dass es mit dem gelesenen Anmeldeprofil zu tun hat (mit .bashrc wurden einige meiner Probleme behoben). Ich werde es versuchen, entschuldige die schrecklich geschriebene Frage.
AlbertEngelB
Danke für die prägnante Erklärung. Es ist nicht ungewöhnlich, dass Benutzer nur ihre Anpassungen in .bashrc behalten und .bash_profile als Quelle für .bashrc haben. Anmeldungsspezifische Anpassungen sollten nur in .bash_profile gespeichert werden.
MichaelZ
1
Warum nicht einfach .bashrc in .bash_profile kopieren und die Login-Shell eingeschaltet lassen? Ist das machbar?
Dr. Nefario