1

/ 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」のみをチェックしたのはなぜですか?

4

1 に答える 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 に答える