如何添加要被 Unix 哪個命令發現的主目錄路徑?
我已經安裝
node.js
在自定義位置並將該位置添加到$PATH
in.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
?
發生這種情況是因為
~
尚未擴展。您的 shell 知道如何處理這個問題,但which
不知道(大多數其他程序也不知道)。相反,請執行以下操作:export "PATH+=:$HOME/Unix/homebrew/bin"
或者,停止使用
which
,並使用(幾乎總是優越的)type -p
。這是該問題的展示:
$ echo "$PATH" /usr/local/bin:/usr/bin:/bin $ export "PATH+=:~/git/yturl" $ yturl Usage: yturl id [itag ...] $ which yturl $ type -p yturl /home/chris/git/yturl/yturl $ export "PATH=/usr/local/bin:/usr/bin:/bin:$HOME/git/yturl" $ which yturl /home/chris/git/yturl/yturl
請記住,查看的其他一些程序
$PATH
可能無法理解其中~
任何一個的含義,並將其視為相對路徑的一部分。使用起來更便攜$HOME
。
你的那一行
.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
~
僅當該字元是單詞的第一個字元且未加引號時,該字元才會擴展到您的主目錄。在您所寫的內容中, the~
位於雙引號之間,因此未展開。即使你寫了export "PATH=$PATH:"~/Unix/homebrew/bin
, the~
也不會被擴展,因為它不是一個 shell 詞的開頭。有一個特殊的分配,旨在為
PATH
類似變數寫入值。如果~
就在標記賦值的等號之後,或者如果~
就在:
賦值右側的 a 之後,那麼它會被擴展。只有普通的分配有這種分配,export PATH=…
不算數(這是對export
內置函式的呼叫,它恰好有一個包含=
字元的參數)。在這裡,您不需要導出
PATH
,因為它已經導出。更改變數的值時不需要呼叫export
(在舊的 Bourne shell 中除外,在 OSX 或 Linux 上找不到)。此外,在賦值(同樣,export
不算數)中,右側不需要雙引號,因此PATH=$PATH:~/Unix/homebrew/bin
即使$PATH
包含空格也是安全的。