Насколько я понимаю, использование ~/go/bin
в качестве компонента $ PATH зависит от нестандартного (возможно, GNU?) Расширения.
Всякий раз, когда ваша оболочка (bash) ищет двоичные файлы, она расширяет
~/
префикс до пути вашего домашнего каталога. Вы можете видеть, чтоtype
(который встроен в оболочку) находит программу Go просто отлично.Между тем
/usr/bin/which
команда (предоставляемая macOS и не являющаяся частью оболочки) не выполняет это расширение, поскольку в официальном описании The Open Group о том, как должен работать $ PATH, ничего не было указано .
Другими словами, ~/
префикс является частью языка оболочки, но не является частью общего синтаксиса пути для всей ОС. Во всех других местах, включая $ PATH (который не ограничивается оболочками!), Это просто означает каталог с именем ~
.
При установке $ PATH, вы должны убедиться, что пути раскрываются во время присваивания:
PATH=$PATH:~/go/bin PATH=$PATH:$HOME/go/bin PATH="$PATH:$HOME/go/bin"
Этот не будет работать:
PATH="$PATH:~/go/bin"