He instalado node.jsen la ubicación personalizada y ha añadido la localización a la $PATHde .profilearchivo.
$ 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 whichcomando. Entonces no puedo instalar npmahora. Porque npminstalar no puede encontrar la ubicación de node.js. ¿Cómo puedo hacer que el nodebinario sea descubierto por which?

whichno 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$PATHcause problemas más adelante porque hay programas que se dividen por$PATHsí 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
.profiledeberí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
PATHy 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 alexportbuiltin, que tiene un argumento que contiene un=carácter).Aquí, no necesita exportar
PATHporque ya se ha exportado. No necesita llamarexportcuando 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,exportno cuenta), no necesita comillas dobles alrededor del lado derecho, por lo quePATH=$PATH:~/Unix/homebrew/bines seguro incluso si$PATHcontiene espacios.fuente