Essa linha no seu .profile
deve ser um dos
export PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin
O ~
caractere só é expandido para o diretório inicial quando é o primeiro caractere de uma palavra e não está entre aspas. No que você escreveu, ~
é entre aspas duplas e, portanto, não é expandido. Mesmo se você escrevesse export "PATH=$PATH:"~/Unix/homebrew/bin
, o ~
não seria expandido porque não está no início de uma palavra shell.
Existe uma dispensação especial, cujo objetivo é escrever valores para PATH
e variáveis semelhantes. Se ~
for logo após o sinal de igual que marca uma tarefa, ou se ~
for logo após a :
no lado direito de uma tarefa, será expandido. Apenas atribuições simples têm essa dispensação, export PATH=…
não contam (é uma chamada para o export
builtin, que por acaso tem um argumento que contém um =
caractere).
Aqui, você não precisa exportar PATH
porque já foi exportado. Você não precisa ligar export
quando altera o valor de uma variável (exceto nos antigos shell Bourne que você não encontrará no OSX ou Linux). Além disso, em uma tarefa (novamente, export
não conta), você não precisa de aspas duplas no lado direito, portanto PATH=$PATH:~/Unix/homebrew/bin
é seguro mesmo que $PATH
contenha espaços.
which
não tem culpa aqui; o~
deveria ter sido expandido na definição dePATH
. Há uma estranheza no bash em que ele se expande de~
qualquer maneiraPATH
, então dois erros fazem o certo, mais ou menos.