Diese Zeile in Ihrer .profile
sollte eine von sein
export PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin
Das ~
Zeichen wird nur dann in Ihr Home-Verzeichnis erweitert, wenn es das erste Zeichen eines Wortes ist und nicht in Anführungszeichen steht. In dem, was Sie geschrieben haben, ~
steht das zwischen doppelten Anführungszeichen und ist daher nicht erweitert. Selbst wenn Sie geschrieben haben export "PATH=$PATH:"~/Unix/homebrew/bin
, wird das ~
nicht erweitert, da es nicht am Anfang eines Shell-Wortes steht.
Es gibt eine spezielle Abgabe, mit der Werte für PATH
und ähnliche Variablen geschrieben werden sollen. Wenn ~
es sich direkt um das Gleichheitszeichen handelt, das eine Zuweisung kennzeichnet, oder wenn ~
es sich direkt nach a :
auf der rechten Seite einer Zuweisung befindet, wird es erweitert. Nur einfache Zuweisungen haben diese Dispensation, export PATH=…
zählen nicht (es ist ein Aufruf an den export
eingebauten, der zufällig ein Argument hat, das ein =
Zeichen enthält ).
Hier müssen Sie nicht exportieren, PATH
da es bereits exportiert wurde. Sie müssen nicht aufrufen, export
wenn Sie den Wert einer Variablen ändern (außer in alten Bourne-Shells, die Sie unter OSX oder Linux nicht finden). Außerdem export
benötigen Sie in einer Zuweisung (zählt wiederum nicht) keine doppelten Anführungszeichen auf der rechten Seite, sodass dies PATH=$PATH:~/Unix/homebrew/bin
auch dann sicher ist, wenn $PATH
Leerzeichen enthalten sind.
which
ist hier nicht schuld; das~
hätte in der Definition von erweitert werden sollenPATH
. Es gibt eine Kuriosität in Bash, dass es das~
ohnehin erweitertPATH
, also machen zwei Fehler eine Art Recht.