2012-04-19 13 views
1

私は "gtags"実行可能ファイルを/ usr/binに持っていますが、これは古いものです。 それから、新しいgtagsをコンパイルし、 "make install"を/ 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"だけをチェックしたのですから?Bash:パス内の実行ファイルを検索するには?

+0

実行可能ファイルのアクセス許可を確認します。また、の – Abhijit

+0

@Abhijitの許可が755であることを確認してください。そして、どのgtagsが "/ usr/local/bin/gtags"を表示していますか – jiluo

答えて

3

はbashを使用して組み込みコマンドhash

[[email protected] ~]# touch /bin/test.sh 
[[email protected] ~]# chmod 755 /bin/test.sh 
[[email protected] ~]# test.sh 
[[email protected] ~]# mv /bin/test.sh /usr/local/bin/ 
[[email protected] ~]# test.sh 
-bash: /bin/test.sh: No such file or directory 
[[email protected] ~]# hash test.sh 
[[email protected] ~]# test.sh 

この問題が発生した理由は、それはそれにそれが望んでいる各時間を見つける必要がないので、バイナリが$ PATHにあるbashの「キャッシュ」でありますそれを実行します。それはパフォーマンスのことです。引数なしで "hash"を実行すると、実行されたコマンド、実行された回数、実行された場所がレポートされます。

+0

ありがとうございます!これは本当に便利です! – jiluo

関連する問題