Quando ripensare gli eseguibili in $ PATH con bash?


9

La shell Bash ha un comando integrato hash -rper reimpostare la $PATHcache interna per gli eseguibili.

Quando è necessario usare questo comando?

Correlati: Come ridisegnare gli eseguibili in $ PATH con bash


1
... per esempio quando hai un programma che hai appena ricompilato ... con lo stesso nome ... forse in un percorso diverso ...
Hastur,

@Hastur: non sono sicuro che il tuo commento sia una domanda o una dichiarazione. Se la dichiarazione, per favore pubblica come risposta.
Kevinevpe,

Risposte:


7

hashè un comando incorporato bash. La tabella hash è una funzione di bash che gli impedisce di cercare $ PATH ogni volta che si digita un comando memorizzando nella cache i risultati.

Pertanto, quando le informazioni memorizzate nella cache non sono più aggiornate o valide, potrebbe essere necessario ripristinarle.

Leggi di più su questa bella risposta su Unix stackexchange .


4

Se in precedenza hai eseguito un programma nell'invocazione della shell e ne hai installato un'altra versione in una directory precedente $PATHnell'elenco di ricerca, devi reimpostare l'hash in modo da trovarlo nella nuova posizione. Altrimenti, utilizzerà la cache per trovare il programma nella vecchia posizione.

È inoltre necessario reimpostare l'hash se un programma è installato in 2 directory nella propria $PATHe si rimuove la copia dalla posizione precedente dopo averlo eseguito. Altrimenti, proverà a trovarlo in quella posizione e riferirà "Nessun file o directory" (personalmente, penso che dovrebbe cancellare automaticamente l'hash e fare una ricerca completa quando ciò accade, ma non è successo quando ho provato ).

Nota che in realtà non devi reimpostare l'intero hash, puoi usare:

hash name

per forzarlo ad aggiornare la voce della cache solo per quel nome, oppure:

hash -d name

per eliminare solo quella voce della cache. Questi lasciano tutte le altre voci della cache da sole.

Non è necessario utilizzarlo hash -rdopo la modifica $PATH, al termine viene ripristinato automaticamente.


Un buon punto sulla parte di installazione e sul punto nel percorso.
kevinarpe,
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.