/ usr / binに「gtags」実行可能ファイルがありますが、これは古いものです。次に、新しいgtagをコンパイルし、「makeinstall」で/ usr / local/binに配置します。次に、/ usr/binにあるものを削除しました。しかし、シェルで「gtags」と入力すると、「/ usr / bin/gtags」が見つからないというメッセージが表示されました。しかし、私は/ usr / local / binに「gtags」を持っており、/ usr / local/binはPATHにあります。また、私のPATHでは、/ usr / local/binが/usr/ binの前に検索されますが、シェルが/ usr / binの「gtags」のみをチェックしたのはなぜですか?
1 に答える
3
bash組み込みコマンドを使用しますhash
:
[root@localhost ~]# touch /bin/test.sh
[root@localhost ~]# chmod 755 /bin/test.sh
[root@localhost ~]# test.sh
[root@localhost ~]# mv /bin/test.sh /usr/local/bin/
[root@localhost ~]# test.sh
-bash: /bin/test.sh: No such file or directory
[root@localhost ~]# hash test.sh
[root@localhost ~]# test.sh
これが発生する理由は、バイナリが$ PATHにあるbashの「キャッシュ」であるため、実行するたびにバイナリを見つける必要はありません。それはパフォーマンスの問題です。引数なしで「ハッシュ」を実行すると、どのコマンドを実行したか、何回実行したか、どこから実行したかが報告されます。
于 2012-04-19T13:35:53.183 に答える