Gibt es in Zsh etwas wie .bash_profile?

84

Jedes Mal, wenn ich das Terminal öffne, muss ich eine Quelle .bash_profileangeben, um die $JAVA_HOMEoder andere Variablen zu aktivieren .

i3wangyi
quelle
1
Ja, wird es bei jedem Öffnen des Terminals automatisch bezogen?
i3wangyi

Antworten:

104

Ja, es heißt ~/.zshenv.

So habe ich mich $JAVA_HOMEeingestellt ~/.zshenv:

export JAVA_HOME="$(/usr/libexec/java_home)"

Beachten Sie jedoch, dass zsh kein Bash ist. Nur weil Sie .bash_profilejedes Mal, wenn Sie ein Terminal öffnen, Ihre Quelle angeben müssen, bedeutet dies nicht , dass Sie dies mit zsh tun müssen. Mit zsh muss ich meine nur neu beziehen, ~/.zshenv wenn ich Änderungen daran vornehme , und dann nur für Terminals, die bereits geöffnet sind : Neue Terminals sollten meine neuen und verbesserten bereits beschafft haben ~/.zshenv.

HINWEIS

Ich finde es oft hilfreich, wenn ich versuche herauszufinden, in welche meiner zsh-Startdateien ich Dinge legen soll, um zsh-Startdateien zu konsultieren .

Alexej Magura
quelle
17
Eigentlich .zprofileist näher an der Bedeutung .bash_profile, dass beide nur von ihren jeweiligen Shells für Login-Shells bezogen werden. .zshenvwird für alle Instanzen ausgeführt zsh, unabhängig davon , ob es sich um Login-Shells handelt oder nicht.
Chepner
6
In @chepner .zshenvsollten alle Umgebungsvariablen definiert werden. Siehe hier
Alexej Magura
3
Einverstanden; .bash_profilemuss für bashwas tun .zshenvund .zprofile/.zloginzusammen für zsh. Dieser Link bietet gute Informationen darüber, was wohin gehen soll.
Chepner
31

Ich weiß, dass dies eine alte Frage ist, aber ich habe kürzlich MacOs auf Catalina aktualisiert, wodurch die Standard-Shell von bash auf zsh geändert wurde.

Am Ende habe ich das gemacht:

 echo source ~/.bash_profile > ~/.zshenv && source ~/.zshenv

Um zsh Quelle mein ursprüngliches .bash_profile zu haben.

Zack
quelle
11
Verwenden Sie den folgenden Befehl, um sicherzustellen, dass die Datei im Home-Verzeichnis des Benutzers erstellt wird:echo source ~/.bash_profile > ~/.zshenv
Smair
Ist die Verwendung von echohier wichtig? Was macht das?
QA Sam
3
@QASam, Echo ist hier ein Muss, X > Ynur das übergeben, was X ausgegeben hat. Ohne Echo wird nichts ausgegeben.
James LoveLady
3

Kürzlich, mit dem Upgrade von Mac auf Catalina OS, wird standardmäßig die Z-Shell ausgeführt, die die zshrc-Datei als Z-Shell-Ressource verwendet. Normalerweise hatten wir bash_profile im Home-Verzeichnis des Benutzers. Die Lösung besteht darin, einfach

  1. Kopieren Sie Inhalte von bash_profile, indem Sie> vim ~ / .bash_profile öffnen
  2. Erstellen Sie zshrc mit> vim ~ / .zshrc
  3. Kopieren Sie den Inhalt von bash_profile in zsrc

Öffnen Sie ein neues Terminalfenster und führen Sie das Skript Ihres vorherigen Alias ​​aus. Es sollte einwandfrei funktionieren

Pravin
quelle
2

Eine andere einfache Alternative, um Ihr .bash_profile weiter zu verwenden, ist das Hinzufügen dieser Datei zu Ihrer .zshrc-Datei:

  1. Öffnen Sie Ihre .zhsrc-Datei> vim ~ / .zshrc
  2. Fügen Sie diese Zeile Ihrer .zshrc-Datei hinzu> source ~ / .bash_profile

Mit dieser einfachen Lösung können Sie Ihre .bash_prifile weiter hinzufügen, wenn Sie zhs mögen.

Hinzufügen von .bash_profile

Backdoorman
quelle
Könnte es einige Unterschiede zwischen bash und zsh geben, die dazu führten, dass bash_profile nicht richtig gestartet wurde? siehe zsh.sourceforge.net/FAQ/zshfaq02.html#l14
framontb
0

In Mac Catalina verwendet das Terminal zsh. Anstatt .bash_profile zu haben, ist es gut, .zshenv zu haben und dort Ihr Skript zu schreiben.

Wenn Sie das nächste Mal das Terminal öffnen, werden Skripte in .zshenv ausgeführt.

Rajeev Jayaswal
quelle