インストールされたプログラム実行可能ファイルが間違った場所で実行されています。

インストールされたプログラム実行可能ファイルが間違った場所で実行されています。

parcelliteUbuntuにインストールしました(ダウンロード:http://parcellite.sourceforge.net/)

ソースからインストールした後、sudo make install次の場所にインストールされていることがわかります。

ただし、実行しようとすると、別のパスで実行しようとします。なぜそんなことですか?

user$ which parcellite
/usr/local/bin/parcellite

user$ parcellite -h
bash: /usr/bin/parcellite: No such file or directory

$PATH次のように

/home/user/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

次のように実行可能ファイルの所有権を変更してみました。しかし、問題は残っています。

user$ ls -l /usr/local/bin/parcellite 
-rwxr-xr-x 1 root root 452K Oct  7 21:00 /usr/local/bin/parcellite
user$sudo chown user:user /usr/local/bin/parcellite
user$ ls -l /usr/local/bin/parcellite 
-rwxr-xr-x 1 user user 452K Oct  7 21:01 /usr/local/bin/parcellite

以前のバージョンの Parcellite がインストールされています。しかし、新しいバージョンをインストールする前に削除しました。


アップデート:@Foxのソリューションが動作します。しかし、更新していないwhichにもかかわらず、コマンドが正しいパスを提供するのはなぜですかhash

答え1

あるバージョンをインストールしてから別のバージョンを別の場所にインストールすると、シェルは元のパスをキャッシュ(ハッシュ)します。を使用してこのキャッシュを消去できますhash -r。その後、次にコマンドを実行すると、新しいパスに再ハッシュされます。

このキャッシュはグローバルキャッシュではありません。実行中の複数のシェルがある場合は、各シェルを更新する必要があります。

which私が正しい道を見た理由は、「なぜ使わないのwhich?」良い情報ソースですが、簡単に答えると、これはwhichシェルパスキャッシュを見ることができない外部コマンドです。

関連情報