So beheben Sie, dass das Terminal ~ / .bashrc unter OS X Lion nicht lädt [geschlossen]


176

Immer wenn ich mit Cmd+ eine neue Registerkarte in Terminal Töffne, wird bash im selben Verzeichnis wie die vorherige Registerkarte geöffnet. Dies funktioniert gut, wenn ich im ~Verzeichnis bin , aber wenn ich irgendwo anders bin, wird beim Laden ein Fehler angezeigt.bashrc

Last login: Sat Oct 15 21:10:00 on ttys002
-bash: .bashrc: No such file or directory
Jakub-Arnolds-MacBook-Pro:projects darth$ 

Es sieht so aus, als würde .bashrces über einen relativen und nicht über einen absoluten Pfad geladen, denn wenn ich das tue source ~/.bashrc, funktioniert alles reibungslos.

geladener bashrc

Ich denke, dies ist ein Problem im Zusammenhang mit OS X Lion, da ich vor dem Upgrade von Snow Leopard nicht das gleiche Problem hatte. Aber das könnte daran liegen, dass das Terminal immer um öffnet ~. Ich erinnere mich nicht, ob es versucht hat, dasselbe Verzeichnis zu öffnen.

Die Frage bleibt jedoch dieselbe: Wie kann ich das Terminal ~/.bashrcüber einen absoluten Pfad und nicht relativ laden ?


1
Diese Frage sollte nach apple.SE (wenn möglich?) verschoben und nicht geschlossen werden.
— Sparr

@Sparr Ich stimme dir vollkommen zu, aber die Moderatoren verschieben nur neuere Fragen, keine älteren. Siehe Diskussion hier
— рüффп

Antworten:


357

Terminal öffnet eine Login-Shell. Dies bedeutet, ~/.bash_profilewird ausgeführt, ~/.bashrcnicht.

Die Lösung auf den meisten Systemen ist es , „require“ die ~/.bashrcin der ~/.bash_profile: gerade diese Schnipsel setzen in Ihrem ~/.bash_profile:

[[ -s ~/.bashrc ]] && source ~/.bashrc

8
Könnte jemand erklären, was der [[ -s /file/path ]]tut? Es ist nicht einfach, bei Google nach einer Erklärung zu suchen.
— Shane

18
From man bash: -s file True, wenn die Datei vorhanden ist und eine Größe größer als Null hat.
— ckruse

1
"Terminal öffnet eine Login-Shell" - was sind die anderen Arten von OS-Shells? Wo finde ich weitere Unterlagen dazu?
— Ritter

4
Es gibt sogenannte "interaktive Shells" und "Login-Shells". Ihr Bash-Handbuch ( man bash) spricht darüber und erklärt es, Kapitel INVOCATION (suchen Sie einfach INVOCATIONnach dem Aufruf man bashdurch Eingabe /INVOCATION)
— ckruse

3
Ich kann nicht erkennen, wie eine Frage, die sich auf eine Codeausführungssituation bezieht und durch eine Codezeile gelöst wird, für eine Programmierfragen-Site "nicht zum Thema" gehört.
— Kheldar

26

Das Umbenennen .bashrcin .profile(oder das weiche Verknüpfen des letzteren mit dem ersteren) sollte ebenfalls den Trick tun. Siehe hier .


Oder Sie könnten sie mit cd && ln -s ./.bashrc ./.profileSymlinks verknüpfen: Beachten Sie, dass Symlinks hinsichtlich des Dateipfads empfindlich sind. Ich glaube, dass die Verwendung der obigen Syntax funktioniert, aber um sicherzugehen, dass Sie auf jeden Fall absolute Pfade verwenden können.
— Steve Benner

1
Oh nein? Diese Dateien haben unterschiedliche Zwecke. Wenn Sie Bash-Syntax .profilehaben, brechen Sie regelmäßig sh.
— Tripleee

14

Ich habe folgendes in meinem ~/.bash_profile:

if [ -f ~/.bashrc ]; then . ~/.bashrc; fi

Wenn ich .bashrcstattdessen hätte ~/.bashrc, würde ich das gleiche Symptom sehen, das Sie sehen.

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.