Come elencare le versioni installate dello stesso programma

7

Ho un programma chiamato PyMOL installato più volte sulla mia macchina. Uno è stato installato da MacPorts, uno è stato installato tramite il canale di distribuzione degli sviluppatori e così via. Uno è in / opt / local / bin, l'altro è in / i / have / no / clue.

So che posso usare "quale pymol" vedere, dove si trova quello che viene eseguito, ma come posso ottenere la posizione degli altri con lo stesso nome?

    
posta TMOTTM 06.09.2013 - 09:06
fonte

4 risposte

3

Hai il comando giusto e hai solo bisogno di impostare l'opzione corretta:

which -a pymol mostrerà tutte le istanze dell'eseguibile pymol situate all'interno di PATH .

Ad esempio, sul mio laptop ho installato git in due posti:

$ which git
/usr/local/bin/git

fornisce ciò che verrà eseguito quando uso il comando git .

$ which -a git
/usr/local/bin/git
/usr/bin/git

fornisce ogni istanza dell'eseguibile nel mio PATH .

    
risposta data 10.09.2013 - 21:56
fonte
2

whereis pymol dovrebbe mostrare tutte le corrispondenze nel tuo percorso eseguibile.

    
risposta data 06.09.2013 - 13:19
fonte
1

Potresti usare "trova" o "trova" e quindi eseguire i risultati tramite "grep".

Questo ti darà più dei risultati di "which" o "whereis" che mostreranno solo cose su $ PATH.

"locate" è più veloce, ma utilizza un indice che non è sempre aggiornato.

"find" è più lento, esegue una ricerca ricorsiva di tutto, ma produce tutti i risultati - non solo i risultati che sono stati indicizzati come "locate" fa.

    
risposta data 06.09.2013 - 17:10
fonte
0

Almeno secondo la sua pagina man, whereis non ricerca in $PATH ma nel risultato di sysctl user.cs_path (che non contiene alcuna directory aggiuntiva aggiunta dal profilo dell'utente). Per cercare il comando basato sull'effettivo $PATH potresti usare una funzione di shell come

function whereis() {
    for p in ${PATH//:/ }; do
        [[ -x "$p/$1" ]] && echo "$p"
    done
}

o (per il tuo caso specifico) corri

for p in ${PATH//:/ }; do [[ -x "$p"/pymol ]] && echo "$p" ; done

PS: il carattere dello spazio vicino alla fine di ${PATH...} è essenziale perché funzioni.

    
risposta data 06.09.2013 - 20:27
fonte

Leggi altre domande sui tag