J'ai installé node.js
à l' emplacement personnalisé et a ajouté l'emplacement du $PATH
au .profile
fichier.
$ 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 lui-même fonctionne bien. Le problème est qu'il n'est pas répertorié par which
commande. Je ne peux donc pas installer npm
maintenant. Parce que l' npm
installation ne trouve pas l'emplacement de node.js
. Comment puis-je faire node
découvrir le binaire par which
?
which
n'est pas en faute ici; le~
aurait dû être élargi dans la définition dePATH
. Il y a une bizarrerie dans bash qui l'expansion de~
toute façonPATH
, donc deux torts font un droit, en quelque sorte.~
est une bizarrerie bash. Avoir ce littéral~
dans$PATH
est susceptible de causer des problèmes sur toute la ligne , car il y a des programmes qui font leur propre division de$PATH
et ils ne traitent pas~
spécialement.~
», votre phrase est trompeuse. Dans le contexte de$PATH
, il s'agit de chaque programme autre que bash.Cette ligne dans votre
.profile
devrait être l'un desLe
~
caractère n'est développé dans votre répertoire personnel que lorsqu'il s'agit du premier caractère d'un mot et qu'il n'est pas cité. Dans ce que vous avez écrit, le~
est entre guillemets doubles et donc pas développé. Même si vous écriviezexport "PATH=$PATH:"~/Unix/homebrew/bin
, le~
ne serait pas développé car il ne se trouve pas au début d'un mot shell.Il existe une dispense spéciale, qui est destinée à écrire des valeurs pour
PATH
et des variables similaires. Si~
est juste après le signe égal qui marque une affectation, ou si~
est juste après un:
dans le côté droit d'une affectation, il est développé. Seules les affectations simples ont cette dispense,export PATH=…
ne compte pas (c'est un appel auexport
builtin, qui se trouve avoir un argument qui contient un=
caractère).Ici, vous n'avez pas besoin d'exporter
PATH
car il est déjà exporté. Vous n'avez pas besoin d'appelerexport
lorsque vous modifiez la valeur d'une variable (sauf dans les anciens shells Bourne que vous ne trouverez pas sous OSX ou Linux). De plus, dans une affectation (encore une fois,export
ne compte pas), vous n'avez pas besoin de guillemets doubles sur le côté droit, c'est doncPATH=$PATH:~/Unix/homebrew/bin
sûr même s'il$PATH
contient des espaces.la source