Ponieważ .zshenvzawsze jest pozyskiwany, często zawiera wyeksportowane zmienne, które powinny być dostępne dla innych programów. Na przykład $PATH, $EDITORi $PAGERczęsto są ustawione w .zshenv. Ponadto, można ustawić $ZDOTDIRw .zshenvcelu określenia alternatywną lokalizację dla reszty konfiguracji zsh.
.zshrcsłuży do interaktywnej konfiguracji powłoki. Ustawiasz tam opcje interaktywnej powłoki za pomocą poleceń setopti unsetopt. Możesz także ładować moduły powłoki, ustawiać opcje historii, zmieniać monit, konfigurować zle i uzupełnianie itd. Ustawiasz także dowolne zmienne, które są używane tylko w interaktywnej powłoce (np $LS_COLORS.).
.zloginjest pozyskiwany na początku powłoki logowania. Plik ten jest często używany do uruchamiania X użyciu startx. Niektóre systemy uruchamiają X podczas rozruchu, więc ten plik nie zawsze jest bardzo przydatny.
.zprofilejest zasadniczo taki sam, .zloginz wyjątkiem tego, że jest pozyskiwany bezpośrednio przed, .zshrca nie bezpośrednio po nim. Zgodnie z dokumentacją zsh, " .zprofileoznacza alternatywę dla` .zlogin 'dla fanów ksh; te dwa nie są przeznaczone do używania razem, chociaż z pewnością można to zrobić w razie potrzeby. "
.zlogout jest czasem używany do czyszczenia i resetowania terminala.
Dla jasności, .zlogin jest pozyskiwany po .zshrc (zobacz man zshallszczegóły).
Aaron
8
Podczas ustawiania być świadomy $PATHw .zshenvróżne inne pliki, wszystkie pochodzą od tego pliku, który będzie zmienić to ustawienie. Zobacz zsh.org/mla/users/2003/msg00600.html .
Beau Barker
Gdzie $LANGi gdzie $LC_ALLiść?
Lenar Hoyt
23
Tylko dla moich własnych notatek / potwierdzeń i aby pomóc komukolwiek innemu, ostateczne zamówienie to .zshenv→ [ .zprofilejeśli logujesz] → [ .zshrcjeśli interaktywnie] → [ .zloginjeśli logujesz] → [ .zlogoutczasami].
Gabriel L.,
23
Oto lista, co moim zdaniem powinien / nie powinien zawierać każdy plik:
.zshenv
[Czytaj za każdym razem]
Jest zawsze pozyskiwany, dlatego powinien określać zmienne środowiskowe, które należy często aktualizować . PATH (lub powiązana z nim ścieżka odpowiednika ) jest dobrym przykładem, ponieważ prawdopodobnie nie chcesz ponownie uruchamiać całej sesji, aby ją zaktualizować. Ustawiając go w tym pliku, ponowne otwarcie emulatora terminala uruchomi nową instancję Zsh ze zaktualizowaną wartością PATH .
Należy jednak pamiętać, że ten plik jest odczytywany nawet po uruchomieniu Zsh w celu uruchomienia pojedynczego polecenia (z opcją -c ), nawet za pomocą innego narzędzia, takiego jak make. Należy bardzo uważać, aby nie modyfikować domyślnego zachowania standardowych poleceń, ponieważ może to spowodować uszkodzenie niektórych narzędzi, które ich używają (na przykład poprzez ustawienie aliasów). Na pewno nie jest to zabronione, ponieważ wiesz, co robisz.
.zprofile
[Czytaj przy logowaniu]
Osobiście traktuję ten plik jak .zshenvdla poleceń i zmiennych, które należy ustawić raz lub które nie muszą być często aktualizowane :
zmienne środowiskowe do konfigurowania narzędzi (flagi do kompilacji, lokalizacja folderu danych itp.)
konfiguracja, która wykonuje polecenia (jak SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"), ponieważ wykonanie może zająć trochę czasu.
Jeśli zmodyfikujesz ten plik, możesz uzyskać aktualizacje konfiguracji, zastępując bieżącą powłokę nową powłoką jako powłoką logowania:
exec zsh --login
.zshrc
[Czytaj, gdy interaktywny]
Umieszczam tutaj wszystko, co potrzebne tylko do interaktywnego użytkowania :
skłonić,
wykonanie polecenia,
korekta polecenia,
sugestia polecenia,
podświetlanie poleceń,
barwienie wyjściowe,
aliasy,
powiązania klawiszy,
zarządza historią poleceń,
inne różnorodne narzędzia interaktywne (auto_cd, manydots-magic) ...
.zlogin
[Czytaj przy logowaniu]
Ten plik jest podobny .zshprofile, ale jest odczytywany później .zshrc. Uważam, że powłoka jest w tej chwili w pełni skonfigurowana.
Używam go więc do uruchamiania zewnętrznych poleceń, które nie modyfikują zachowań powłoki (np. Menedżera logowania).
.zlogout
[Czytaj przy wylogowaniu] [W powłoce logowania]
Tutaj możesz wyczyścić swój terminal lub dowolną inną konfigurację zasobów podczas logowania.
Jak wybieram miejsce ustawienia
potrzebne jest polecenie uruchamiane nieinteraktywnie :.zshenv
powinien zostać zaktualizowany w nowej powłoce :.zshenv
uruchamia polecenie, które może zająć trochę czasu :.zprofile
jest to związane z interaktywnym użyciem :.zshrc
jest to polecenie, które należy uruchomić, gdy powłoka jest w pełni skonfigurowana :.zlogin
to zwalnia zasób zdobytej podczas logowania:.zlogout
Nie odbieraj ssh-agentpołączeń .zshenv. Powodowało to, że moje lesspolecenie nie wyświetlało już żadnych plików tekstowych, prawdopodobnie dlatego, że jego opcje zostały dostosowane przez Prezto ( export LESS='-F -g -i -M -R -S -w -X -z-4'in .zprofile).
Odpowiedzi:
Oto niewyłączna lista zawartości każdego pliku:
.zshenv
zawsze jest pozyskiwany, często zawiera wyeksportowane zmienne, które powinny być dostępne dla innych programów. Na przykład$PATH
,$EDITOR
i$PAGER
często są ustawione w.zshenv
. Ponadto, można ustawić$ZDOTDIR
w.zshenv
celu określenia alternatywną lokalizację dla reszty konfiguracji zsh..zshrc
służy do interaktywnej konfiguracji powłoki. Ustawiasz tam opcje interaktywnej powłoki za pomocą poleceńsetopt
iunsetopt
. Możesz także ładować moduły powłoki, ustawiać opcje historii, zmieniać monit, konfigurować zle i uzupełnianie itd. Ustawiasz także dowolne zmienne, które są używane tylko w interaktywnej powłoce (np$LS_COLORS
.)..zlogin
jest pozyskiwany na początku powłoki logowania. Plik ten jest często używany do uruchamiania X użyciustartx
. Niektóre systemy uruchamiają X podczas rozruchu, więc ten plik nie zawsze jest bardzo przydatny..zprofile
jest zasadniczo taki sam,.zlogin
z wyjątkiem tego, że jest pozyskiwany bezpośrednio przed,.zshrc
a nie bezpośrednio po nim. Zgodnie z dokumentacją zsh, ".zprofile
oznacza alternatywę dla` .zlogin 'dla fanów ksh; te dwa nie są przeznaczone do używania razem, chociaż z pewnością można to zrobić w razie potrzeby. ".zlogout
jest czasem używany do czyszczenia i resetowania terminala.Powinieneś przejrzeć pliki konfiguracyjne losowych użytkowników Github, aby uzyskać lepsze pojęcie o tym, co powinien zawierać każdy plik.
źródło
man zshall
szczegóły).$PATH
w.zshenv
różne inne pliki, wszystkie pochodzą od tego pliku, który będzie zmienić to ustawienie. Zobacz zsh.org/mla/users/2003/msg00600.html .$LANG
i gdzie$LC_ALL
iść?.zshenv
→ [.zprofile
jeśli logujesz] → [.zshrc
jeśli interaktywnie] → [.zlogin
jeśli logujesz] → [.zlogout
czasami].Oto lista, co moim zdaniem powinien / nie powinien zawierać każdy plik:
.zshenv
[Czytaj za każdym razem]
Jest zawsze pozyskiwany, dlatego powinien określać zmienne środowiskowe, które należy często aktualizować . PATH (lub powiązana z nim ścieżka odpowiednika ) jest dobrym przykładem, ponieważ prawdopodobnie nie chcesz ponownie uruchamiać całej sesji, aby ją zaktualizować. Ustawiając go w tym pliku, ponowne otwarcie emulatora terminala uruchomi nową instancję Zsh ze zaktualizowaną wartością PATH .
Należy jednak pamiętać, że ten plik jest odczytywany nawet po uruchomieniu Zsh w celu uruchomienia pojedynczego polecenia (z opcją -c ), nawet za pomocą innego narzędzia, takiego jak
make
. Należy bardzo uważać, aby nie modyfikować domyślnego zachowania standardowych poleceń, ponieważ może to spowodować uszkodzenie niektórych narzędzi, które ich używają (na przykład poprzez ustawienie aliasów). Na pewno nie jest to zabronione, ponieważ wiesz, co robisz..zprofile
[Czytaj przy logowaniu]
Osobiście traktuję ten plik jak
.zshenv
dla poleceń i zmiennych, które należy ustawić raz lub które nie muszą być często aktualizowane :SCONSFLAGS="--jobs=$(( $(nproc) - 1 ))"
), ponieważ wykonanie może zająć trochę czasu.Jeśli zmodyfikujesz ten plik, możesz uzyskać aktualizacje konfiguracji, zastępując bieżącą powłokę nową powłoką jako powłoką logowania:
.zshrc
[Czytaj, gdy interaktywny]
Umieszczam tutaj wszystko, co potrzebne tylko do interaktywnego użytkowania :
.zlogin
[Czytaj przy logowaniu]
Ten plik jest podobny
.zshprofile
, ale jest odczytywany później.zshrc
. Uważam, że powłoka jest w tej chwili w pełni skonfigurowana.Używam go więc do uruchamiania zewnętrznych poleceń, które nie modyfikują zachowań powłoki (np. Menedżera logowania).
.zlogout
[Czytaj przy wylogowaniu] [W powłoce logowania]
Tutaj możesz wyczyścić swój terminal lub dowolną inną konfigurację zasobów podczas logowania.
Jak wybieram miejsce ustawienia
.zshenv
.zshenv
.zprofile
.zshrc
.zlogin
.zlogout
źródło
Nie odbieraj
ssh-agent
połączeń.zshenv
. Powodowało to, że mojeless
polecenie nie wyświetlało już żadnych plików tekstowych, prawdopodobnie dlatego, że jego opcje zostały dostosowane przez Prezto (export LESS='-F -g -i -M -R -S -w -X -z-4'
in.zprofile
).źródło