Co powinno / nie powinno wchodzić w .zshenv, .zshrc, .zlogin, .zprofile, .zlogout?


Odpowiedzi:


155

Oto niewyłączna lista zawartości każdego pliku:

  • 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.

Powinieneś przejrzeć pliki konfiguracyjne losowych użytkowników Github, aby uzyskać lepsze pojęcie o tym, co powinien zawierać każdy plik.


3
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

0

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).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.