Was ändert meinen $PATH?

Wenn ich ein neues Terminal öffne, ist der $PATH nicht das, was ich in .zshenv eingestellt habe

grep -i path .??*zeigt, dass keine andere Punktdatei den Pfad festlegt.

Wenn ich ein paar hinzufüge echo, sehe ich:

Last login: Thu Nov 18 13:29:13 on ttys000
PATH: /usr/bin:/bin
path: /usr/bin /bin
WGroleau@MBP ~ % echo $PATH
/Users/WGroleau/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Users/WGroleau/bin:/opt/local/bin:/opt/local/sbin:/usr/local/sbin
WGroleau@MBP ~ % cat .zshenv
echo "PATH: $PATH"
echo "path: $path"
LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export HOMEBREW_NO_ANALYTICS=1
export PATH=~/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
WGroleau@MBP ~ % 

/Library/Apple/usr/bin existiert nicht einmal! Aus dem Kommentar geht hervor, dass es etwas ist, das Apple in 12.0.1 entfernt hat

RE: "/Library/Apple/usr/bin existiert nicht einmal!" -- Welche Version von macOS verwenden Sie? Ich frage, weil es auf meinem System vorhanden ist, auf dem macOS Catalina und macOS Big Sur ausgeführt werden .
Fügen Sie set -xes Ihrer .zshenv-Datei hinzu, damit es ausgibt, was in den Init-Dateien passiert, und Sie sehen können, wo die Hinzufügungen stattfinden.
Was befindet sich in /Library/Apple/usr/bin ? Vielleicht ist es ein Fehler, dass Apple es verschoben und nicht geändert hat, was auch immer es auf den Weg bringt.

Antworten (1)

In Gordons Kommentar fand ich zwei beunruhigende Dinge:

  1. -x zeigt ungefähr hundert Aktionen für JEDEN eingegebenen Befehl an.

  2. /etc/zprofile wird NACH der .zshenv-Datei des Benutzers aufgerufen, um den Pfad mithilfe einer kompilierten ausführbaren Datei in /usr/libexec/path_helper zu ändern, die ~/.zshenv durch Lesen der Dateien /etc/paths und /etc/paths.d/* überschreibt.

Es ist also nicht abzusehen, ob es sich um einen Apple-Fehler handelt oder ob ein Fehler eines Drittanbieters dies verursacht hat. Die Manpage sagt, dass ich den Schaden in ~/.zprofile überschreiben kann