たとえば、
$ node
-bash: /usr/local/bin/node: No such file or directory
$ foo
-bash: foo: command not found
違いは何ですか?どちらの場合も、node
間違っfoo
たコマンドですが、Unixがnode
バイナリを見つけることができないと思いますか?たとえば、プログラムをアンインストールするときにnode
プログラムをクリーンアップして次のようにする方法はありますか?
$ node
-bash: node: command not found
編集する:
コマンドの結果type
:
$ type node
node is hashed (/usr/local/bin/node)
$ type foo
-bash: type: foo: not found
ベストアンサー1
bash
コマンドの場所を記憶して保存するためです。ハッシュテーブル。
アンロード後もnode
ハッシュテーブルは消去されず、まだ存在していると見なされ、bash
検索をスキップして呼び出しが直接使用されます。これ以上存在しない場合はエラーが返されます。つまり、対応するファイルやディレクトリがないことを意味し、エラーがユーザーに報告されます。node
/usr/local/bin/node
PATH
/usr/local/bin/node
execve()
node
execve()
ENOENT
bash
では、bash
ハッシュテーブルのエントリを削除できます。
hash -d node
または、ハッシュテーブル全体を削除します(すべてのPOSIXシェルで動作):
hash -r