Pertanyaan Bagaimana bisa `yang cmd`! = Cmd?


Adakah yang bisa menjelaskan ini?

$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Jul 12 2010 12:47:31)
$ `which vim` --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Oct 13 2011 22:52:17)

Saya baru saja mengkompilasi versi terbaru dari vim dan menginstalnya $HOME/bin, yang merupakan jalur pertama di $PATH. which vim mengembalikan jalur yang benar: /home/user/bin/vimNamun, ketika saya mengeksekusi vim diluncurkan /usr/bin/vim.

Saya meluncurkan xterm lain dan masalah telah hilang, namun saya masih penasaran seperti bagaimana istilah sebelumnya masuk ke dalam keadaan yang aneh. Ada ide?


2
2017-10-14 03:31


asal




Jawaban:


Di UNIX, ketika Anda menjalankan perintah, shell menyimpan jalur di mana ia menemukan biner. Jika Anda kemudian mengubah jalur, atau menginstal versi yang berbeda di direktori sebelumnya di jalan, maka shell tidak akan menemukannya karena tidak benar-benar mencari perintah yang sudah ditemukan.

Jika Anda sudah mengetik hash -r sebelum membandingkan vim dan vim, maka Anda tidak akan melihat perbedaan ini.


5
2017-10-14 05:10



Itu masuk akal, terima kasih. - mwcz