Gibt es in zsh eine einfache Möglichkeit, meinem PATH ein Verzeichnis hinzuzufügen, wenn es noch nicht vorhanden ist? (oder allgemeiner jede Umgebungsvariable). Ich habe es versucht:
PATH+=/my/directory
... aber wenn das zweimal ausgeführt wird, wird es zweimal hinzugefügt.
Antworten:
In
zsh
$PATH
ist antypeset -T
das$path
Array gebunden (siehe ) . Sie können dieses Array zwingen, eindeutige Werte zu haben mit:Fügen Sie dann den Pfad hinzu mit:
Ohne sich sorgen zu müssen, wenn es schon da war.
Gehen Sie wie folgt vor, um es an der Vorderseite hinzuzufügen:
oder:
wenn
~/foo
das schon$path
drin war wird es nach vorne rücken.quelle
typeset -Ug path
? Wenn ichtypeset -U path
in meiner~/.zshrc
Datei verwende, erhalte ich immer eine Fehlermeldung, dass sich nichts im Pfad befindet, während der zshrc ausgeführt wird-g
soll vermeiden, den Geltungsbereich einzuschränken, aber in~/.zshrc
ist der Geltungsbereich bereits global. Außerdem habe ich noch niezsh
Beschwerden über eine leere gesehen$PATH
(außer dem Befehl keine Fehler gefunden natürlich).Fügen Sie
export -U PATH=~/foo${PATH:+:$PATH}
zu einer Ihrer Startdateien hinzu. Das-U
hält nur das erste Auftreten eines Wertes in Arrays oder bestimmten:
getrennten Variablen wie PATH.quelle
Sie müssen etwas tun wie:
Dies funktioniert nur, wenn
newpath
es durch zwei ':' abgegrenzt ist und die Fälle berücksichtigt werden müssen, in denen es am Anfang oder Ende ähnlich ist.Urgh.
quelle
echo "$PATH"
: Setzen Sie Variablenersetzungen immer in doppelte Anführungszeichen ).case ":$PATH:" in *:/new/directory:*) :;; *) PATH=$PATH:/new/directory;; esac