Come trovare il percorso dell'applicazione dalla riga di comando?


109

Ad esempio, ho gitinstallato sul mio sistema. Ma non ricordo dove l'ho installato, quindi quale comando è adatto per scoprirlo?


45
Heh, heh " whichcomando" davvero :)
Tikhon Jelvis

Risposte:


123

Se si trova sul tuo percorso, puoi eseguire type gito which git. Il whichcomando ha avuto problemi a ottenere il percorso corretto (confusione tra ambiente e file dot). Per type, puoi ottenere solo il percorso con l' -pargomento.

Se non è sul tuo percorso, allora è meglio cercarlo con locate -b git Troverà qualsiasi cosa chiamata 'git'. Sarà un lungo elenco, quindi potrebbe essere utile qualificarlo locate -b git | fgrep -w bin.


10
Uso locateall'infinito (è molto veloce), ma per chi non lo sapesse, locateè aggiornato solo come il suo aggiornamento del database più recente, che viene eseguito automaticamente ogni giorno sul mio Ubuntu. Il comando di aggiornamento è sudo updatedb... Ha anche la locatefunzionalità regex integrata, quindi comandi come questo funzionano: locate -br "^git$"... -b` significa limitare la ricerca al solo nome di base ... o senza il -b, cerca il percorso completo .. Inoltre , cerca solo i percorsi in cui è stato configurato per la ricerca. Non esiste un controllo da riga di comando diverso dai filtri regex.
Peter

7
Preferiscono typea which. whichsi confonde facilmente .
Gilles,

@Gilles, è divertente per me il comportamento è esattamente l'opposto: typeè un shell incorporato che mi dice alias e simili, ed whichè un programma esterno che mi mostra il percorso di un eseguibile ... anche se se c'è un builtin che entra nel modo in cui quel file eseguibile non verrà chiamato.
quodlibetor,

@quodlibetor Il problema whichè che non è a conoscenza dei built-in e delle funzioni della shell (il che è rilevante quando ti stai chiedendo che cosa farà la digitazione del comando), e ne usa uno diverso $PATHsu alcuni sistemi.
Gilles,

48

Il modo standard POSIX per farlo è command -v git. Tutti i sistemi simili a UNIX dovrebbero supportare questo.


4
So che ha più di un anno, ma era esattamente quello che stavo cercando; sorpreso che questa non sia la risposta accettata.
Akoi Meexx,


13

Le altre risposte qui sembrano essere in gran parte orientata verso le versioni moderne di Linux, quindi se vi capita di utilizzare gitsu un sistema operativo che non dispone locate, whereis, which, o apropos(come Solaris, HP-UX, ecc), quindi c'è sempre il vecchio standby find.

find / -name git 

Una delle versioni precedenti dei sistemi sopra elencati, potrebbe essere necessaria -printun'opzione fornita a find.

find / -name git -print

E se lo usi locate, assicurati di eseguire updatedbperiodicamente. ( locate.updatedbsu alcuni derivati ​​BSD)


8
Per i programmi nel percorso, utilizzaretype ; è affidabile e portatile (tranne che per i sistemi di 30 anni).
Gilles

Grazie @Gilles. Non l'ho mai saputo type. :) Questo è sicuramente nel repertorio!
Tim Kennedy,

Probabilmente vale la pena sottolineare che findesegue una ricerca approfondita del file system partendo da qualsiasi posizione in cui viene effettuato il root. Quindi find / -name gitattraverserà l'intero sistema. Se sai che il programma è sulla tua strada di solito puoi farlo IFS=":"; path=$PATH; set $path; for dir in $path; do find $dir -name git; done, anche se i filesystem Unix sono abbastanza permissivi che questo può rompersi in una varietà di modi se hanno strani caratteri nel tuo PATH.
quodlibetor,

In realtà il comando che ho dato in precedenza romperà il tuo PATH, la cosa corretta (con le stesse avvertenze di prima) è IFS=":"; for dir in $PATH; do find "$dir" -name git; done. Inoltre, per ribadire, questa risposta deve essere utilizzato solo da persone che non hanno accesso a typeo which o locate , ad esempio, quasi nessuno. @ La risposta di Arcege è corretta.
quodlibetor,

5

Per ottenere il percorso del programma installato, utilizzare whereiso which. Se ti capita di dimenticare il suo nome, puoi usarlo aproposcon un sinonimo o una descrizione della tua utility, ad esempio apropos "version control"troverai git. Di seguito è ovviamente il whatiscomando di riassumere brevemente la funzione di un programma. Ciò tuttavia non si applica a tutti i programmi e le funzioni del sistema. Prova ad esempio whatis "the meaning of life, universe and everything".


2
Ho pensato che sarebbe tornato con "42"! LOL.
Joe,
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.