Bash, taşınan / silinen bir yürütülebilir dosyanın yanlış yolunu hatırlıyor


29

Ben yaparken

which pip3

alırım

/usr/local/bin/pip3

ancak yürütmeye çalıştığımda pip3aşağıdaki gibi bir hata alıyorum:

bash: /usr/bin/pip3: No such file or directory

Bunun nedeni, yakın zamanda bu dosyayı silmiş olmamdır. Şimdi whichkomut pip3bunun içinde bulunan başka bir versiyona işaret ediyor /usr/local/binancak kabuk hala yanlış yolu hatırlıyor. Bu yolu unutmasını nasıl sağlayabilirim?

whichmanuel diyor

which returns the pathnames of the files (or links) which would be executed in the current environment, had its arguments been given as commands in
       a strictly POSIX-conformant shell.  It does this by searching the PATH for executable files matching the names of the arguments. It does not follow
       symbolic links.

Hem /usr/local/binve /usr/binbenim olan PATHdeğişken ve /usr/local/bin/pip3sembolik bağ değil, bir çalıştırılabilir bu. Peki neden yürütmüyor?


İçeriği nedir /usr/local/bin/pip3?
Thomas

Daha önce pip3içinde bulunduğun o kabukta koşup /usr/bintaşınmış mıydın?
Eric Renouf

1
Kaçarsan ne görüyorsun hash -t pip3?
Eric Renouf

1
@Eric Renouf hash -t pip3yazdırıyor/usr/bin/pip3
spiderface 16

2
Çok iyi bir nedeniniz olmadığı sürece, her zaman typedaha çok kullanmalısınız which. typebir posix kabuğuna yerleştirilmiştir ve kabuğun ne yapacağını whichtahmin etmeye çalışmak yerine, bir kabuğun ne yapacağını söyler .
icarus

Yanıtlar:


37

Bir komut çalıştırdığınızda bash, bu yürütülebilir dosyanın konumunu hatırlar, böylece PATHher seferinde tekrar aramak zorunda kalmaz . Bu nedenle çalıştırılabilir dosyayı çalıştırırsanız, konumu değiştirin bash, eski konumu kullanmaya çalışın. hash -t pip3Eski konumu gösterecek olanı onaylamanız gerekir .

Eğer hash -d pip3koşarsanız, eski konumu unutmasını söyler ve bir dahaki sefere yenisini bulması gerekir.


4
Veya hash -rbütün masayı temizlemek için.
mattdm

Evet, işe yaradı. Sanırım sorunun başlığını değiştireceğim çünkü bununla ilgisi yok which.
örümcek suratı

1
Çoğu bash özelliği için @ spiderface help, insan yerine kullanımı daha kolay , işte buradahelp hash
Eric Renouf

3
@ spiderface type hashsize bunun bir kabuk yerleşik olduğunu söyleyecektir, bu yüzden kendi man sayfasına sahip değildir. Bunun yerine bash'ın man sayfasını kullanın help hashveya arayın hash.
saat

1
Ya da gerçekten kullanmak istiyorsanız man... hashbir bashyerleşik olduğundan, man bashonu bulmak istersiniz . Ancak man sayfasının söylediği aslında help hashbash lafının söylediği şeydir .
MAP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.