Installazioni multiple e comprensione di $ PATH


17

Ho una versione precedente di Git installata su:

/usr/bin/

Di recente ho scaricato una versione più recente su:

/usr/local/bin

Quando scrivo:

which git

Ottengo la posizione della vecchia versione. Credo che ciò sia dovuto al fatto che / usr / bin / appare prima di / usr / local / bin nella mia variabile $ PATH e quindi la versione precedente di git viene prima trovata.

Per verificarlo, ho rinominato la versione precedente di git in "git_old". Ora quando scrivo:

which git

Ottengo la posizione della versione più recente, come previsto. Ma quando scrivo:

git --version

Ottengo il seguente errore:

-bash: /usr/bin/git: No such file or directory

Mi chiedo solo perché il mio computer torni a cercare Git nella vecchia posizione?

Risposte:


30

Bash memorizza nella cache l'intero percorso degli eseguibili in modo che non debba cercare $PATHogni volta.

Puoi vedere cosa c'è nella cache usando il hashcomando:

deltik@node51 [~]$ hash
hits    command
   1    /usr/bin/git

Questa cache può essere cancellata con hash -r:

deltik@node51 [~]$ hash -r
deltik@node51 [~]$ hash
hash: hash table empty

Risorse addizionali


2
wtf non l'ho mai saputo, fantastico.
djsmiley2k in darkness

1
La maggior parte delle altre shell fa la stessa cosa, ma non tutte usano hash -rper ricaricare la cache. Singer, come SSH, usa invece rehashcome comando.
Moshe Katz,

PATH = $ PATH dovrebbe cancellare la cache. hash -r non è necessario.
jrw32982 supporta Monica il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.