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 ~/.zshenvwtedy, 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 .
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.
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
skopiuj zawartość z bash_profile, otwierając> vim ~ / .bash_profile
utwórz zshrc przez> vim ~ / .zshrc
skopiuj zawartość bash_profile do zsrc
Otwórz nowe okno terminala i uruchom poprzedni alias / skrypt powinien działać bez zarzutu
Odpowiedzi:
Tak, nazywa się
~/.zshenv
.Oto jak
$JAVA_HOME
ustawił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_profile
kod 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 .
źródło
.zprofile
ma bliższe znaczenie.bash_profile
, ponieważ obie są pozyskiwane tylko przez ich odpowiednie powłoki dla powłok logowania..zshenv
jest wykonywany dla wszystkich instancji programuzsh
, niezależnie od tego, czy są to powłoki logowania, czy nie..zshenv
należy zdefiniować wszystkie zmienne środowiskowe. Zobacz tutaj.bash_profile
musi robić pobash
co.zshenv
i.zprofile/.zlogin
razem robićzsh
. To łącze zapewnia dobre informacje o tym, co i gdzie należy się udać.PATH
w programie.zshenv
polega na tym, że można go później zastąpić, powiedzmy przez/etc/profile
; zobacz zmienną PATH w .zshenv lub .zshrc .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.
źródło
echo source ~/.bash_profile > ~/.zshenv
echo
tutaj jest ważne? Co to robi?X > Y
przekazuj tylko to, co wyprowadził X. Bez echa nic nie jest wyświetlane.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
Otwórz nowe okno terminala i uruchom poprzedni alias / skrypt powinien działać bez zarzutu
źródło
Inną prostą alternatywą, aby kontynuować korzystanie z .bash_profile, jest dodanie tego pliku do pliku .zshrc:
dzięki temu prostemu rozwiązaniu możesz kontynuować dodawanie swojego .bash_prifile, jeśli chcesz zhs.
Dodanie .bash_profile
źródło
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.
źródło