Эта строка в вашем .profile
должно быть одним из
export PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH="$PATH:$HOME/Unix/homebrew/bin"
PATH=$PATH:$HOME/Unix/homebrew/bin
PATH=$PATH:~/Unix/homebrew/bin
Символ ~
раскрывается только до вашего домашнего каталога, когда он является первым символом слова и не заключен в кавычки. В том, что вы написали, ~
находится между двойными кавычками и поэтому не раскрывается. Даже если вы написали export "PATH=$PATH:"~/Unix/homebrew/bin
, ~
оно не будет расширено, потому что оно не находится в начале слова оболочки.
Существует специальное разрешение, которое предназначено для записи значений PATH
и аналогичных переменных. Если ~
сразу после знака равенства, который обозначает назначение, или если ~
сразу после a :
в правой части назначения, то он расширяется. Только обычные присваивания имеют эту диспенсацию, export PATH=…
не считаются (это вызов export
встроенной функции, в которой есть аргумент, содержащий =
символ).
Здесь вам не нужно экспортировать, PATH
потому что он уже экспортирован. Вам не нужно вызывать, export
когда вы изменяете значение переменной (за исключением старых оболочек Борна, которых вы не найдете в OSX или Linux). Кроме того, в задании (опять же, export
не в счет) вам не нужны двойные кавычки вокруг правой части, поэтому PATH=$PATH:~/Unix/homebrew/bin
это безопасно, даже если $PATH
содержит пробелы.
which
здесь не виноват;~
должны были расширены в определенииPATH
. В bash есть странность, что в~
любом случае она расширяетсяPATH
, поэтому два вида ошибок делают правильное, своего рода.