EDIT: Vedi anche la risposta di d4nyll di seguito per una mappa eccellente e adatta ai principianti!
Leggi la mia risposta qui sotto per maggiori informazioni su ciò che è la PATH
variabile d'ambiente, quali .desktop
file sono e come trovare un programma specifico usando vari comandi di Linux.
Risposta originale:
Non c'è una risposta facile.
/bin
, /usr/bin
e/usr/share
Come menzionato nelle altre risposte, puoi trovare la maggior parte degli eseguibili in /bin
o /usr/bin
e in cui sono installati i file di supporto /usr/share
.
/usr/local
e /opt
Esistono tuttavia più directory in cui Ubuntu installa le applicazioni. La PATH
variabile, che determina dove cercare un comando inserito, potrebbe darti un indizio, il mio appare come ( echo $PATH
in un terminale):
/usr/local/cuda/bin:/usr/local/texlive/2012/bin/x86_64-linux:/usr/games:/home/gerhard/bin:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
Come puoi vedere alcuni software sono installati /usr/local
e hanno una propria directory e bin
. Un altro posto in cui sono installati molti programmi è /opt
. Le proprietà di queste posizioni sono spiegate dal Filesystem Hierarchy Standard , che è un'ottima lettura. Sfortunatamente, la differenza tra /opt
e /usr/local
non è molto ben spiegata, qualcuno sullo stackexchange di unix aveva una spiegazione più elaborata:
/usr/local
è un posto dove installare i file creati dall'amministratore, di solito usando il comando make. L'idea è quella di evitare scontri con file che fanno parte dei sistemi operativi che verrebbero sovrascritti o altrimenti sovrascriverebbero quelli locali. per esempio. /usr/bin/foo
fa parte del sistema operativo mentre /usr/local/bin/foo
è un'alternativa locale,
/opt
è una directory per installare pacchetti non raggruppati ciascuno nella propria sottodirectory. Sono già costruiti interi pacchetti forniti da un distributore di software di terze parti indipendente. Ad esempio, someapp
verrebbe installato in /opt/someapp
, uno dei suoi comandi sarebbe in /opt/someapp/bin/foo
[e quindi di solito viene creato un collegamento simbolico in una delle bin
directory nel PATH
, oppure il programma viene chiamato da un file desktop (vedi sotto)].
Trovare un programma o un comando specifico
.desktop
File
Per scoprire dove è installato un programma specifico, è possibile eseguire una serie di passaggi. Per prima cosa devi individuare il suo .desktop
file. I file desktop sono simili ai collegamenti in Windows e per le applicazioni di sistema in cui si trovano /usr/share/applications
. Sono presenti i file desktop per le applicazioni disponibili solo per l'utente corrente ~/.local/share/applications
. Prendi ad esempio Google Chrome, che ha il file desktop /usr/share/applications/google-chrome.desktop
e cerca la riga che inizia con Exec=
, questo determina come avviare Google Chrome. Dice:
Exec=/opt/google/chrome/google-chrome
Quindi sai che è presente Google Chrome /opt
.
Ora per Mozilla Firefox che si trova in /usr/share/applications/firefox.desktop
. Dice semplicemente
Exec=firefox %u
All'inizio questo non sembra aiutare molto, ma poi ti rendi conto che firefox
deve trovarsi in una directory che si trova nella PATH
variabile (molto probabilmente a bin
), e possiamo cercarla (vedi sotto).
Ricerca dei comandi
Per cercare i comandi è possibile utilizzare uno o più dei seguenti: type
, which
e whereis
(ho incluso un link alle loro pagine di manuale on-line).
tipo : descrive un comando e indica come sarebbe interpretato se usato come nome di comando. I tipi possibili per un comando sono:
- alias (alias shell)
- funzione (funzione shell)
- builtin (shell builtin)
- file (file su disco)
- parola chiave (parola riservata alla shell)
(il tipo stesso è un shell incorporato, provalo con type type
: P)
L'esecuzione type firefox
ci dà
firefox is /usr/bin/firefox
che è quello che volevamo sapere
Se un comando è un file (con cui hai controllato type
) puoi anche usare:
quale : mostra il percorso completo del comando,
L'esecuzione which firefox
ci dà
/usr/bin/firefox
whereis : individua i file binari, di origine e della pagina del manuale per un comando.
L'esecuzione whereis firefox
ci dà
firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
indennità
Puoi ispezionare /usr/bin/firefox
più da vicino con ls -l /usr/bin/firefox
e questo dà:
/usr/bin/firefox -> ../lib/firefox/firefox.sh*
Sembra che /usr/bin/firefox
sia "solo" un collegamento simbolico alla sceneggiatura /usr/lib/firefox/firefox.sh
. Se controlli lo script scopri che lo script chiama /usr/lib/firefox/firefox
.
Puoi riposare in pace ora :)