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/zprofile
und dann$ZDOTDIR/.zprofile
gelesen. Wenn es sich bei der Shell um eine interaktive Shell handelt, werden Befehle aus/etc/zshrc
und dann gelesen$ZDOTDIR/.zshrc
. Wenn es sich bei der Shell schließlich um eine Login-Shell handelt, werden/etc/zlogin
und$ZDOTDIR/.zlogin
gelesen.
Die verwirrenden Teile ...
- Wenn es sich um eine Login-Shell handelt, liest sie von
/etc/zprofile
und dann$ZDOTDIR/.zprofile
/etc/zlogin
Schließlich werden und$ZDOTDIR/.zlogin
gelesen , 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 .zprofile
und zu verstehen .zlogin
. Daher wäre jede Anleitung hier großartig.
Antwort1
Die *profile
Dateien und die *login
Dateien 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 *profile
kommt von sh
, demBourne-Shell(wobei ksh, bash, dash und andere meist Neuimplementierungen mit zusätzlichen Funktionen sind). Der Name *login
kommt 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 *profile
oder verwenden *login
. *profile
Dateien haben jedoch den Vorteil, dass sie vor gelesen werden . *rc
Wenn Sie also Inhalt haben *rc
, der von Einstellungen von abhängt *profile
(wenn Ihr beispielsweise .zshrc
ein Programm aufruft, das sich in einem Verzeichnis befindet, das .zprofile
zu hinzufügt $PATH
), müssen Sie *profile
und verwenden, nicht *login
.
Legen Sie daher die Konfiguration zur Anmeldezeit (normalerweise hauptsächlich Umgebungsvariablen) in ~/.profile
und die interaktive Konfiguration (Eingabeaufforderung, Vervollständigung, Tastenkombinationen, Aliase usw.) in ab ~/.zshrc
. Die anderen Startdateien werden Sie selten benötigen.