Esa línea en tu .profile
debería ser una de
export PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin
El ~
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 al export
builtin, que tiene un argumento que contiene un =
carácter).
Aquí, no necesita exportar PATH
porque ya se ha exportado. No necesita llamar export
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 que PATH=$PATH:~/Unix/homebrew/bin
es seguro incluso si $PATH
contiene espacios.
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.