W jaki sposób `jaki cmd`! = Cmd?

2

Czy ktoś może to wyjaśnić?

$ 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)

Właśnie skompilowałem najnowszą wersję vima i zainstalowałem ją $HOME/bin, co jest pierwszą ścieżką do $PATH. which vimzwraca poprawną ścieżkę: /home/user/bin/vimjednak po vimjej uruchomieniu uruchamia się /usr/bin/vim.

Uruchomiłem kolejny xterm i problem zniknął, ale wciąż jestem ciekawy, jak poprzedni termin stał się tak dziwny. Jakieś pomysły?

mwcz
źródło

Odpowiedzi:

5

W systemie UNIX po uruchomieniu polecenia powłoka zapisuje ścieżkę, w której znalazła plik binarny. Jeśli następnie zmienisz ścieżkę lub zainstalujesz inną wersję w katalogu wcześniej na ścieżce, powłoka go nie znajdzie, ponieważ tak naprawdę nie szuka poleceń, które już znalazła.

Gdybyś napisał hash -rprzed porównaniem vim i vim, nie zobaczyłbyś tej rozbieżności.

Michael Dillon
źródło