Você também pode usar whereis
. Ele mostrará o caminho para o binário, mas também alguns arquivos relacionados, como documentação:
whereis program
Como obter a localização de um programa no Ubuntu? Por exemplo, eu tenho Oracle
, como obter a pasta racine (location) de Oracle
?
Você também pode usar whereis
. Ele mostrará o caminho para o binário, mas também alguns arquivos relacionados, como documentação:
whereis program
Bash e Dash têm o comando interno command
que pode mostrar a localização de um comando com a opção -v
, se o comando fizer referência a um executável. Para comandos e aliases integrados, o resultado é diferente. Exemplos:
$ command -v java
/usr/bin/java
$ echo $?
0
$ command -v echo
echo
$ command -v ls
alias ls='ls -h --color=auto'
$ command -v non-existing_command; echo $?
1
Além disso, todos os shells derivados de Sh, conhecem o comando type
que informa sobre a natureza de qualquer comando.
$ type java
java is /usr/bin/java
$ type ls
ls is aliased to 'ls -h --color=auto'
$ type echo
echo is a shell builtin
$ type non-existing_command
bash: type: non-existing_command: not found
Se o seu shell (por exemplo, Bash) for compatível, type -a
listará tudo o que um comando pode referir:
$ type -a ls
ls is aliased to 'ls -h --color=auto'
ls is /bin/ls
$ type -a echo
echo is a shell builtin
echo is /bin/echo
$ type -a touch
touch is /usr/bin/touch
touch is /bin/touch
Você pode usar which
para determinar qual binário está sendo executado.
which ssh
which Oracle
Estes são exemplos e retornariam o caminho completo para os binários.
Você também pode usar whereis
para localizar informações adicionais, mas isso pode confundi-lo nessa situação.
Como David Foerster já mencionou, você pode usar type -a
, que mostrará todos os locais em que um determinado executável pode ser encontrado no ativo $PATH
:
$ type -a now
now is /home/rick/bin/now
now is /mnt/e/bin/now
type -a
também identificará se o comando é um shell embutido. Por exemplo:
$ type -a test
test is a shell builtin
test is /usr/bin/test
type -a
também identificará se o comando é uma palavra-chave do shell. Por exemplo:
$ type -a if
if is a shell keyword
type a
lista programas, comandos, shell embutidos e palavras-chave shell na ordem hierárquica a ser chamada, dependendo da variável de ambiente $PATH
. Ao alterar PATH=
para uma ordem diferente, ela altera qual versão do programa é chamada. Isso é útil quando você tem versões de produção, desenvolvimento e programa de teste na mesma máquina.
E se o programa não estiver no seu caminho? A maneira mais rápida de encontrá-lo é com o comando locate
:
$ locate .bashrc
/etc/bash.bashrc
/etc/skel/.bashrc
/home/rick/.bashrc
/home/rick/.bashrc~
/mnt/e/.bashrc
/mnt/e/Temporary Work/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
Eu meio que trapaceei aqui porque .bashrc
não é um verdadeiro executável, é um arquivo "fonte" para incluir em um script bash que é um executável. No entanto, serve para ilustrar adequadamente.