
私が行く途中に計画があります。指定されたフルパスを使用して実行すると、プログラムが実行されます。ちなみに、名前だけではプログラムを実行するとプログラムが見つかりません。
本質的に、私は次の出力がどのように可能であるか、そして完全なパスを指定せずに私のプログラムを実際に見つけることができるようにこれを修正する方法を理解したいと思います。
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
答え2
この問題の別の原因は、実行可能ファイルパスが実行可能ファイルパスではなくパスにあるためです。ディレクトリを含める。
だから入れないでください
/home/myDir/theExecutable
パスにこれを追加します。
/home/myDir