例えば:
$ 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
これは、bash
がコマンドの場所を記憶しているため、それを ハッシュ テーブルに保存するためです。
node
をアンインストールした後、ハッシュテーブルは消去されず、bash
はnode
が_/usr/local/bin/node
_にあると見なし、PATH
ルックアップをスキップします。 execve()
を使用して_/usr/local/bin/node
_を直接呼び出す。 node
がなくなった場合、execve()
はENOENT
エラーを返します。これは、そのようなファイルやディレクトリがないことを意味します。bash
はそのエラーを報告しました。
bash
では、ハッシュテーブルからエントリを削除できます。
_hash -d node
_
またはハッシュテーブル全体を削除( すべてのPOSIXシェルで機能 ):
_hash -r
_