parcellite
Ubuntuにインストールしました(ダウンロード: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
シェルパスキャッシュを見ることができない外部コマンドです。