Como obter a localização de um programa no terminal do Ubuntu?

2

Como obter a localização de um programa no Ubuntu? Por exemplo, eu tenho Oracle , como obter a pasta racine (location) de Oracle ?

    
por SalamBoy 19.02.2016 / 00:16

4 respostas

6

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

    
por Eduardo Cola 19.02.2016 / 00:27
8

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
    
por David Foerster 19.02.2016 / 00:47
7

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.

    
por earthmeLon 19.02.2016 / 00:21
1

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.

O programa não está em $ PATH

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.

    
por WinEunuuchs2Unix 02.07.2018 / 01:19