`hash -p`は外部コマンド名のパス名を変更しますか?

`hash -p`は外部コマンド名のパス名を変更しますか?

私の~.profile

PATH="/path/1/":"/path/2/":"$PATH"

/path/1/そして/path/2/両方とも同じ名前の実行可能ファイルを持っていますmyexecutable

非ログインインタラクティブシェルで一時的に2つのディレクトリ間の検索順序を変更したいと思います。

Bashのマニュアルによるとhash

-pオプションはパス検索を無効にし、ファイル名が名前の場所として使用されます。

私の方法は

$ hash -p /path/2/myexecutable
hits    command
   3    /usr/bin/which
   4    /usr/bin/psql
   1    /bin/cat
  10    /usr/bin/sudo
   1    /bin/mv
   1    /usr/bin/whereis
   3    /bin/mkdir
  19    /bin/ls

出力はと同じで変更されhashないようです。myexecutable/path/2/myexecutable

$ which myexecutable
/path/1/myexecutable

それではhash -p、実際には何をしますか?

ありがとうございます。

ベストアンサー1

からhelp hash

ハッシュ:ハッシュ[-lr] [-pパス名] [-dt] [名前...]

-p pathname は、PATHNAME を NAME の絶対パス名として使用します。

だから:

$ hash -p   /path/2/myexecutable   myexecutable

やりたいことをします。

もちろん、実行可能ファイル名でいくつかのゲームをプレイできます。

$ hash -p   /bin/echo  myexecutable

echo電話したらすぐに実行してくださいmyexecutable

$ myexecutable Hello World
Hello World

おすすめ記事