Эта строка в вашем .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, поэтому два вида ошибок делают правильное, своего рода.