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?

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“.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.