He instalado node.js
en la ubicación personalizada y ha añadido la localización a la $PATH
de .profile
archivo.
$ 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 en sí funciona bien. El problema es que no está listado por which
comando. Entonces no puedo instalar npm
ahora. Porque npm
instalar no puede encontrar la ubicación de node.js
. ¿Cómo puedo hacer que el node
binario sea descubierto por which
?
which
no tiene la culpa aquí; el~
debería haberse ampliado en la definición dePATH
. Hay una rareza en bash en la que se expande de~
todos modosPATH
, por lo que dos errores hacen un correcto, más o menos.~
es una extraña rareza. Es probable que tener ese literal~
adentro$PATH
cause problemas más adelante porque hay programas que se dividen por$PATH
sí mismos y no los tratan~
especialmente.~
", su oración es engañosa. En el contexto de$PATH
, este es cada programa que no sea bash.Esa línea en tu
.profile
debería ser una deEl
~
carácter solo se expande a su directorio de inicio cuando es el primer carácter de una palabra y no está entre comillas. En lo que escribió, el~
es entre comillas dobles y, por lo tanto, no se expande. Incluso si escribióexport "PATH=$PATH:"~/Unix/homebrew/bin
, el~
no se expandiría porque no está al comienzo de una palabra de shell.Hay una dispensación especial, que está destinada a escribir valores
PATH
y variables similares. Si~
está justo después del signo igual que marca una tarea, o si~
está justo después de un:
en el lado derecho de una tarea, entonces se expande. Solo las asignaciones simples tienen esta dispensación,export PATH=…
no cuenta (es una llamada alexport
builtin, que tiene un argumento que contiene un=
carácter).Aquí, no necesita exportar
PATH
porque ya se ha exportado. No necesita llamarexport
cuando cambia el valor de una variable (excepto en los antiguos shells Bourne que no encontrará en OSX o Linux). Además, en una tarea (de nuevo,export
no cuenta), no necesita comillas dobles alrededor del lado derecho, por lo quePATH=$PATH:~/Unix/homebrew/bin
es seguro incluso si$PATH
contiene espacios.fuente