Szukam wskazówek, co należy, a czego nie należy uwzględniać w różnych plikach startowych zsh
.
Rozumiem kolejność pozyskiwania tych plików i warunki ich pozyskiwania, ale nadal nie jest dla mnie jasne, co powinno się w nich znaleźć.
Szukam wskazówek, co należy, a czego nie należy uwzględniać w różnych plikach startowych zsh
.
Rozumiem kolejność pozyskiwania tych plików i warunki ich pozyskiwania, ale nadal nie jest dla mnie jasne, co powinno się w nich znaleźć.
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
i 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
.)..zlogin
jest 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..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.
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:
[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.
[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:
exec zsh --login
[Czytaj, gdy interaktywny]
Umieszczam tutaj wszystko, co potrzebne tylko do interaktywnego użytkowania :
[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).
[Czytaj przy wylogowaniu] [W powłoce logowania]
Tutaj możesz wyczyścić swój terminal lub dowolną inną konfigurację zasobów podczas logowania.
.zshenv
.zshenv
.zprofile
.zshrc
.zlogin
.zlogout