Я установил node.js
в произвольном месте и добавил местоположение $PATH
в .profile
файл.
$ node --version
v0.6.2
$ which node
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:~/Unix/homebrew/bin
$ cat ~/.profile
export PATH="$PATH:~/Unix/homebrew/bin"
Сам Node.js работает хорошо. Проблема состоит в том, что это не перечислено which
командой. Так что я не могу установить npm
сейчас. Поскольку npm
установка не может найти местоположение node.js
. Как я могу сделать node
бинарный файл обнаруженным which
?
which
здесь не виноват;~
должны были расширены в определенииPATH
. В bash есть странность, что в~
любом случае она расширяетсяPATH
, поэтому два вида ошибок делают правильное, своего рода.~
странная странность. Имея , что буквальные~
ин$PATH
может вызвать проблемы вниз линию , потому что есть программы , которые делают свои собственные расщеплению ,$PATH
и они не относятся к~
специально.~
», ваше предложение вводит в заблуждение. В контексте$PATH
, это каждая программа, кроме bash.Эта строка в вашем
.profile
должно быть одним изСимвол
~
раскрывается только до вашего домашнего каталога, когда он является первым символом слова и не заключен в кавычки. В том, что вы написали,~
находится между двойными кавычками и поэтому не раскрывается. Даже если вы написалиexport "PATH=$PATH:"~/Unix/homebrew/bin
,~
оно не будет расширено, потому что оно не находится в начале слова оболочки.Существует специальное разрешение, которое предназначено для записи значений
PATH
и аналогичных переменных. Если~
сразу после знака равенства, который обозначает назначение, или если~
сразу после a:
в правой части назначения, то он расширяется. Только обычные присваивания имеют эту диспенсацию,export PATH=…
не считаются (это вызовexport
встроенной функции, в которой есть аргумент, содержащий=
символ).Здесь вам не нужно экспортировать,
PATH
потому что он уже экспортирован. Вам не нужно вызывать,export
когда вы изменяете значение переменной (за исключением старых оболочек Борна, которых вы не найдете в OSX или Linux). Кроме того, в задании (опять же,export
не в счет) вам не нужны двойные кавычки вокруг правой части, поэтомуPATH=$PATH:~/Unix/homebrew/bin
это безопасно, даже если$PATH
содержит пробелы.источник