Klarstellung zu: ZSH-Start-/Shutdown-Dateien

Klarstellung zu: ZSH-Start-/Shutdown-Dateien

Ich habe gerade ein Upgrade auf macOS Catalina durchgeführt und die neue Shell ist ZSH. Da es also ein Neustart ist, versuche ich, meine Shell-Umgebung mit Aliasnamen, Funktionen usw. einzurichten, wie ich sie in Bash hatte. Ich versuche herauszufinden, was wohin gehört, als ich imDokumentation

Anschließend werden Befehle aus gelesen $ZDOTDIR/.zshenv. Wenn es sich bei der Shell um eine Login-Shell handelt, werden Befehle aus /etc/zprofileund dann $ZDOTDIR/.zprofilegelesen. Wenn es sich bei der Shell um eine interaktive Shell handelt, werden Befehle aus /etc/zshrcund dann gelesen $ZDOTDIR/.zshrc. Wenn es sich bei der Shell schließlich um eine Login-Shell handelt, werden /etc/zloginund $ZDOTDIR/.zlogingelesen.

Die verwirrenden Teile ...

  • Wenn es sich um eine Login-Shell handelt, liest sie von /etc/zprofileund dann$ZDOTDIR/.zprofile
  • /etc/zloginSchließlich werden und $ZDOTDIR/.zlogingelesen , wenn es sich bei der Shell um eine Login-Shell handelt .

Wenn ich per SSH auf meinen Mac zugreife, ist es eine Login-Shell. Da ich das also konfigurieren muss, welche Dateien muss (oder sollte) ich ändern? Ich denke, um diese Frage zu beantworten, wäre es wahrscheinlich hilfreich, den Unterschied zwischen .zprofileund zu verstehen .zlogin. Daher wäre jede Anleitung hier großartig.

Antwort1

Die *profileDateien und die *loginDateien werden unter denselben Bedingungen gelesen: genau dann, wenn die Shell eine Login-Shell ist (und nicht mit einer Option wie aufgerufen wird no_rcs). Das Handbuch listet sie separat auf, da sie in Bezug auf die Dateien in einer anderen Reihenfolge aufgerufen werden *rc.

Der Name *profilekommt von sh, demBourne-Shell(wobei ksh, bash, dash und andere meist Neuimplementierungen mit zusätzlichen Funktionen sind). Der Name *loginkommt voncsh. Zsh ähnelt eher sh, verfügt aber über Funktionen von beiden. Ich vermute, dass es deshalb beide Namen unterstützt.

Oft spielt es keine Rolle, ob Sie *profileoder verwenden *login. *profileDateien haben jedoch den Vorteil, dass sie vor gelesen werden . *rcWenn Sie also Inhalt haben *rc, der von Einstellungen von abhängt *profile(wenn Ihr beispielsweise .zshrcein Programm aufruft, das sich in einem Verzeichnis befindet, das .zprofilezu hinzufügt $PATH), müssen Sie *profileund verwenden, nicht *login.

Legen Sie daher die Konfiguration zur Anmeldezeit (normalerweise hauptsächlich Umgebungsvariablen) in ~/.profileund die interaktive Konfiguration (Eingabeaufforderung, Vervollständigung, Tastenkombinationen, Aliase usw.) in ab ~/.zshrc. Die anderen Startdateien werden Sie selten benötigen.

verwandte Informationen