Não há uma resposta fácil.
/bin
, /usr/bin
e /usr/share
Como mencionado em outras respostas, você pode encontrar a maioria dos executáveis em /bin
ou /usr/bin
, e os arquivos de suporte estão instalados em /usr/share
.
/usr/local
e /opt
No entanto, existem mais diretórios nos quais o Ubuntu instala aplicativos. A variável PATH
, que determina onde procurar um comando digitado, pode lhe dar uma pista, a minha se parece com ( echo $PATH
em um terminal):
/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
Como você pode ver, alguns softwares são instalados em /usr/local
e possuem seu próprio diretório e bin
. Outro local onde muitos programas estão instalados é /opt
. As propriedades desses locais são explicadas pelo Padrão de Hierarquia do Sistema de Arquivos , que é uma leitura muito boa. Infelizmente, a diferença entre /opt
e /usr/local
não é muito bem explicada, alguém no unix stackexchange tinha uma explicação mais elaborada:
-
/usr/local
é um local para instalar arquivos criados pelo administrador, geralmente usando o comando make. A idéia é evitar conflitos com arquivos que fazem parte dos sistemas operacionais que seriam sobrescritos ou sobrescreveriam os locais de outra forma. por exemplo. /usr/bin/foo
faz parte do sistema operacional, enquanto /usr/local/bin/foo
é uma alternativa local,
-
/opt
é um diretório para instalar pacotes não incluídos em seu próprio subdiretório. Eles já são pacotes completos construídos fornecidos por um distribuidor independente de software de terceiros. Por exemplo, someapp
seria instalado em /opt/someapp
, um de seus comandos seria em /opt/someapp/bin/foo
[e, em seguida, normalmente um link simbólico é feito em um dos diretórios bin
no PATH
, ou o programa é chamado de um arquivo de desktop (veja abaixo)].
Encontrar um programa ou comando específico
.desktop
arquivos
Para descobrir onde um programa específico está instalado, você pode executar várias etapas. Primeiro você precisa localizar seu arquivo .desktop
. Os arquivos da área de trabalho são semelhantes aos atalhos no Windows e, para aplicativos do sistema, estão localizados em /usr/share/applications
. Os arquivos da área de trabalho para aplicativos que estão disponíveis apenas para o usuário atual estão em ~/.local/share/applications
. Tomemos por exemplo o Google Chrome, que tem o arquivo da área de trabalho /usr/share/applications/google-chrome.desktop
e procura a linha que começa com Exec=
, isso determina como iniciar o Google Chrome. Diz:
Exec=/opt/google/chrome/google-chrome
Então você sabe que o Google Chrome está em /opt
.
Agora, para o Mozilla Firefox, que está localizado em /usr/share/applications/firefox.desktop
. Simplesmente diz
Exec=firefox %u
A princípio, isso não parece ajudar muito, mas você percebe que firefox
deve estar em um diretório que esteja na variável PATH
(provavelmente em bin
), e podemos procurar up (veja abaixo).
Procurando comandos
Para pesquisar comandos, você pode usar uma ou mais das seguintes opções: type
, which
e whereis
(incluí um link para as páginas de manuais on-line).
-
tipo : descreve um comando e indica como ele seria interpretado se usado como um nome de comando. Tipos possíveis para um comando são:
- alias (alias do shell)
função - (função shell)
- incorporado (construído no shell)
- arquivo (arquivo de disco)
- palavra-chave (palavra reservada do shell)
(o próprio tipo é um comando de comando bash, experimente com type type
: P)
A execução de type firefox
nos dá
firefox is /usr/bin/firefox
que é o que nós queríamos saber
Se um comando for um arquivo (que você verificou com type
), você também poderá usar:
-
que : mostra o caminho completo do comando,
A execução de which firefox
nos dá
/usr/bin/firefox
-
whereis : localize os arquivos binários, fonte e manual para um comando.
A execução de whereis firefox
nos dá
firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/lib64/firefox /usr/bin/X11/firefox /usr/share/man/man1/firefox.1.gz
Bônus
Você pode inspecionar /usr/bin/firefox
mais perto de ls -l /usr/bin/firefox
e isso nos dá:
/usr/bin/firefox -> ../lib/firefox/firefox.sh*
Parece que /usr/bin/firefox
é 'apenas' um link simbólico para o script /usr/lib/firefox/firefox.sh
. Se você inspecionar o script, descobrirá que o script chama /usr/lib/firefox/firefox
.
Você pode descansar em paz agora:)
EDITAR : Veja também a resposta do d4nyll para um bom roteiro.