Warum muss ich bei jedem Öffnen von Terminal ~ / .bash_login als Quelle angeben?

4

Wenn ich Terminal.app schließe und öffne, wird mein ~ / .bash_profile nie geladen. Ich habe mein RVM-Setup oben in der Datei, aber es wird nie geladen.

Wie Sie sehen können, bedeutet das bei der Eingabe rvmin Terminal, dass command not founddies ein Schmerz ist, da ich source ~/.bash_loginjedes Mal laufen muss, wenn ich Terminal öffne.

Befehl rvm nicht gefunden

Bin ich der einzige mit diesem Problem? Was mache ich falsch?

Dean Perry
quelle
Wie sieht aus Neugier Ihr Terminal-Einstellungsfenster auf der Registerkarte "Start" aus?
Jason Salaz
Sie zeigen dies: i.qyk.in/loD8A.png
Dean Perry
1
Seltsam in When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.
Anbetracht der Manpage
3
"es lädt nie mein ~ / .bash_profile" "Ich muss laufen source ~/.bash_login" Was ist das? Verwenden Sie ~ / .bash_profile oder ~ / .bash_login? Nur einer von ihnen wird ausgeführt.
Chris Seite

Antworten:

2

Muss es sein .bash_login? Versuchen Sie es umzubenennen .profile.

Graham
quelle
Oder .bash_profile- was funktioniert
Rene Larsen
Das ist sehr überraschend. ~ / .bash_login sollte genauso gut funktionieren wie ~ / .bash_profile. Für mich geht das. Sie können ein echo .bash_loginam Anfang von ~ / .bash_login setzen, um zu sehen, ob es ausgeführt wird. Natürlich wird es nicht ausgeführt, wenn Sie auch ~ / .bash_profile haben.
Chris Seite
2

Bash liest die .bash_loginDatei nur, wenn sie als Login-Shell gestartet wurde (das --loginFlag wurde übergeben). Versuchen Sie .bashrcstattdessen, es in umzubenennen. Dies wird ausgewertet, wenn bashes als interaktive Shell ohne --loginFlag aufgerufen wurde .

DarkDust
quelle
Ich habe versucht .bashrc, aber es tut das gleiche
Dean Perry
3
Vor Lion erstellt Terminal Anmeldeshells, sofern Sie keinen benutzerdefinierten Befehl unter Einstellungen> Start oder Einstellungen> Einstellungen> [Profil]> Shell eingeben . Ab Mac OS X Lion 10.7 erstellt Terminal immer Anmeldeshells, auch für benutzerdefinierte Befehle, wenn diese in / etc / shells aufgeführt sind.
Chris Seite
1

Stellen Sie sicher, dass Ihr .bash_login-Skript keine relativen Pfade wie enthält

Quelle .profile

Ändern

Quelle ~ / .profile

Lion ändert das Verzeichnis in Ihren aktuellen Tab oder in den Ordner, in dem sich Ihre letzte Sitzung befindet. Daher müssen jetzt alle Pfade absolut sein.

Brendon McLean
quelle
1

Bei mir lädt bash in Lion auch nicht ~ / .profile.

Das Hinzufügen eines source ~/.profileBefehls zur Ausführung beim Start in den Shell-Einstellungen hat geholfen, ist aber ziemlich unelegant.

Damian
quelle
Überprüfen Sie Ihre Einstellungen, um sicherzustellen, dass Sie nichts unternommen haben, um die Erstellung einer Anmeldeshell zu unterdrücken. Befindet sich etwas in Terminal> Einstellungen> Einstellungen> [Profil]> Shell> Startup oder Terminal> Einstellungen> Startup> Shells mit benutzerdefinierten öffnen ?
Chris Seite
0

Ändern von .bashrc von

source .bash_profile

zu

source ~/.bash_profile

hat den Trick für mich getan.

Peter
quelle
2
Ich empfehle, in die andere Richtung zu gehen: Haben Sie ~ / .bash_profile source ~ / .bashrc. Fügen Sie all das, was Sie möchten, in ~ / .bashrc ein, um sich mit und ohne Login-Shells anzumelden. ~ / .bash_profile sollte nur Konfigurationsbefehle für Login-Shells enthalten.
Chris Seite
0

Das Standardverhalten auf meinem MacBook, auf dem Sierra ausgeführt wird (ich kenne High Sierra nicht), scheint darin zu bestehen, dass das Terminal bei der .bash_profileAnmeldung ausgeführt wird.

Nur wenn .bash_profiledies nicht vorhanden ist, wird das Terminal ausgeführt .bash_login.

Vergewissern Sie sich, dass .bash_profilein Ihrem Home-Verzeichnis kein Platz frei ist . Wenn Sie dies tun, löschen Sie es und melden Sie sich erneut an. dann sollten Sie sehen, Terminal läuft Ihre .bash_login.

(Empirisch: Mein MacBook lässt sich entweder .profileoder nicht öffnen oder ausführen .bashrc. In der Tat kann ich mein MacBook .bash_logindurch Ausführen deaktivieren touch ~/.bash_profileund es durch Ausführen in den Betriebszustand zurückversetzen rm ~/.bash_profile.)

Quuxplusone
quelle