私のパスにあるプログラムですが、Bashはプログラムを見つけることができません。

私のパスにあるプログラムですが、Bashはプログラムを見つけることができません。

私が行く途中に計画があります。指定されたフルパスを使用して実行すると、プログラムが実行されます。ちなみに、名前だけではプログラムを実行するとプログラムが見つかりません。

本質的に、私は次の出力がどのように可能であるか、そして完全なパスを指定せずに私のプログラムを実際に見つけることができるようにこれを修正する方法を理解したいと思います。

root:/usr/local/bin# ./siege
****************************************************
siege: could not open /usr/local/bin/etc/siegerc
run 'siege.config' to generate a new .siegerc file
****************************************************
root:/usr/local/bin# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory
root:/usr/local/bin# wtf!?!?

Ubuntu 12.04でbashを使用しています。また、プログラムを見つけて呼び出すことができるかどうかにのみ興味があるので、siegeの警告出力はこの質問の目的とは関係ありません。

ベストアンサー1

ここで出力を参照してください。

root:/usr/local/bin# siege
bash: /usr/bin/siege: No such file or directory

Bashは、パス内で以前に見つかった実行可能ファイルの内部ハッシュを保持します。この場合、/usr/bin/siegeがかつて実行可能ファイルを持っていたという詳細があり、再検索しないようにそのパスを再利用します。次のように、包囲パスを手動で再ハッシュするようにbashに指示する必要があります。

hash siege

すべてのハッシュ位置を消去することもできます。

hash -r

おすすめ記事