Ich habe node.js
am benutzerdefinierten Speicherort installiert und den Speicherort zur $PATH
In- .profile
Datei hinzugefügt .
$ node --version
v0.6.2
$ which node
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:~/Unix/homebrew/bin
$ cat ~/.profile
export PATH="$PATH:~/Unix/homebrew/bin"
Node.js selbst läuft gut. Das Problem ist, dass es nicht per which
Befehl aufgelistet wird . Also kann ich npm
jetzt nicht installieren . Weil npm
install den Speicherort von nicht finden kann node.js
. Wie kann ich die node
Binärdatei von entdecken lassen which
?
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.~
ist eine Bash-Kuriosität. Diese wörtliche Nachdem~
in$PATH
wahrscheinlich Ursache in die Bredouille , weil es Programme gibt, die ihre eigene Spaltung tun von$PATH
und sie nicht behandeln~
speziell.~
“, ist Ihr Satz irreführend. Im Kontext von$PATH
ist dies jedes andere Programm als Bash.Diese Zeile in Ihrer
.profile
sollte eine von seinDas
~
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 habenexport "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 denexport
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ßerdemexport
benötigen Sie in einer Zuweisung (zählt wiederum nicht) keine doppelten Anführungszeichen auf der rechten Seite, sodass diesPATH=$PATH:~/Unix/homebrew/bin
auch dann sicher ist, wenn$PATH
Leerzeichen enthalten sind.quelle