Czy w Zsh jest coś takiego jak .bash_profile?

94

Za każdym razem, gdy otwieram terminal, muszę .bash_profilewłączyć źródło, aby włączyć $JAVA_HOMElub inne zmienne.

i3wangyi
źródło
1
tak, czy jest pobierany automatycznie przy każdym otwarciu terminala?
i3wangyi

Odpowiedzi:

117

Tak, nazywa się ~/.zshenv.

Oto jak $JAVA_HOMEustawiłem się w ~/.zshenv:

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

Pamiętaj jednak, że zsh to nie bash, więc to, że musisz pozyskiwać swój .bash_profilekod za każdym razem, gdy otwierasz terminal, nie oznacza, że ​​musisz to robić z zsh. W przypadku zsh muszę ponownie pobrać moje źródło tylko ~/.zshenv wtedy, gdy wprowadzę w nim zmiany , i tylko dla terminali, które są już otwarte : nowe terminale powinny już być pozyskane z mojego nowego i ulepszonego ~/.zshenv.

UWAGA

Często uważam, że jest to pomocne, gdy próbuję określić, w którym z moich plików startowych zsh należy umieścić elementy, aby sprawdzić pliki startowe zsh .

Alexej Magura
źródło
17
W rzeczywistości .zprofilema bliższe znaczenie .bash_profile, ponieważ obie są pozyskiwane tylko przez ich odpowiednie powłoki dla powłok logowania. .zshenvjest wykonywany dla wszystkich instancji programu zsh, niezależnie od tego, czy są to powłoki logowania, czy nie.
chepner
6
W @chepner .zshenvnależy zdefiniować wszystkie zmienne środowiskowe. Zobacz tutaj
Alexej Magura
3
Zgoda; .bash_profilemusi robić po bashco .zshenvi .zprofile/.zloginrazem robić zsh. To łącze zapewnia dobre informacje o tym, co i gdzie należy się udać.
chepner
@Alexej Problem z definiowaniem PATHw programie .zshenvpolega na tym, że można go później zastąpić, powiedzmy przez /etc/profile; zobacz zmienną PATH w .zshenv lub .zshrc .
legends2k
37

Wiem, że to stare pytanie, ale ostatnio zaktualizowałem MacOs do Catalina, co zmieniło domyślną powłokę z bash na zsh.

Skończyło się na tym:

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

Aby mieć zsh źródło mojego oryginalnego pliku .bash_profile.

Zack
źródło
11
Użyj tego polecenia, aby upewnić się, że plik zostanie utworzony w katalogu domowym użytkownika:echo source ~/.bash_profile > ~/.zshenv
Smair
Czy użycie echotutaj jest ważne? Co to robi?
awesame
3
@QASam, echo jest tutaj konieczne, X > Yprzekazuj tylko to, co wyprowadził X. Bez echa nic nie jest wyświetlane.
James LoveLady
3

Niedawno po aktualizacji do Catalina OS z Maca, domyślnie zmienia się na uruchomienie powłoki Z, która używa pliku zshrc jako zasobu powłoki Z, zwykle mieliśmy bash_profile w katalogu domowym użytkownika, rozwiązaniem jest po prostu

  1. skopiuj zawartość z bash_profile, otwierając> vim ~ / .bash_profile
  2. utwórz zshrc przez> vim ~ / .zshrc
  3. skopiuj zawartość bash_profile do zsrc

Otwórz nowe okno terminala i uruchom poprzedni alias / skrypt powinien działać bez zarzutu

Pravin
źródło
2

Inną prostą alternatywą, aby kontynuować korzystanie z .bash_profile, jest dodanie tego pliku do pliku .zshrc:

  1. Otwórz plik .zhsrc> vim ~ / .zshrc
  2. Dodaj tę linię do swojego pliku .zshrc> source ~ / .bash_profile

dzięki temu prostemu rozwiązaniu możesz kontynuować dodawanie swojego .bash_prifile, jeśli chcesz zhs.

Dodanie .bash_profile

backdoorman
źródło
czy mogą istnieć jakieś różnice między bash i zsh, które powodowały, że bash_profile nie uruchamiał się poprawnie? patrz zsh.sourceforge.net/FAQ/zshfaq02.html#l14
framontb
0

W Mac Catalina terminal używa zsh. Zamiast .bash_profile, dobrze jest mieć .zshenv i pisać tam swój skrypt.

Kiedy następnym razem otwierasz terminal, uruchamiane są skrypty wewnątrz .zshenv.

Rajeev Jayaswal
źródło