web-dev-qa-db-ja.com

それが私のパスにあるにもかかわらず、バッシュはプログラムを見つけていません

私は自分の道にプログラムを持っています。プログラムは、フルパスを指定して実行すると実行されます。しかし、名前だけで実行すると、プログラムが見つかりません。

基本的に、私は以下の出力がどのように可能であるか、およびフルパスを指定せずにプログラムが実際に見つかるようにそれを修正する方法を理解したいと思います。

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!?!?

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

26
Jonah

ここの出力に注意してください:

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

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

hash siege

すべてのハッシュ化された場所をクリアすることもできます:

hash -r
39
Chris Down

この問題の別の原因としては、実行可能ファイルへのパスが、実行可能ファイルのディレクトリを含むではなくパス上にあることが考えられます。

だから置く代わりに

/home/myDir/theExecutable

パス上で、これを追加するだけです

/home/myDir
1
Matthias Braun