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
答え1
あなたの回線は次のいずれか.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にない古いBourneシェルを除く)。また、課題(やはりexport
計算しない)では右側に二重引用符が必要ないため、スペースを含めてPATH=$PATH:~/Unix/homebrew/bin
も$PATH
安全です。
答え2
~
まだ拡張されていないため、この現象が発生します。あなたのシェルはこれを処理する方法を知っていますが、そうでは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
。