Como posso encontrar o caminho para um executável no OSX

46

Existe um comando que eu possa usar para encontrar facilmente o caminho para um executável? Estou procurando identificar na minha máquina local - algo como pwd?

pwd identify
=> /usr/local/bin/identify
Codebeef
fonte

Respostas:

60

which irá procurar no seu caminho os argumentos que você fornece, é encontrado em praticamente qualquer BSD ou SysV UNIX

moriarty:~ dave$ which bash true false
/bin/bash
/usr/bin/true
/usr/bin/false
Dave Cheney
fonte
1
O whichcomando que funcionará geralmente não é a ferramenta certa a ser usada para fazer esse tipo de trabalho. Veja estas perguntas e respostas na U&L: unix.stackexchange.com/questions/85249/…
slm
6
No OSX, whichnão fornece resultados para um script personalizado (que está dentro $PATH). typefaz.
wisbucky
17

Se você usar o bash builtin type, ele mostrará todos os locais (no caminho) para um comando:

$ type -a ls
ls is aliased to `ls --color=always'
ls is /bin/ls

$ type -a printf
printf is a shell builtin
printf is /usr/bin/printf

$ type -a touch
touch is /usr/bin/touch
touch is /bin/touch

Se o comando for uma função, ele listará a definição da função:

$ type -a somefunc
somefunc is a function
somefunc ()
{
    echo "hello, world"
}

Estes exemplos são de um sistema Ubuntu, mas os resultados serão semelhantes para o OS X.

Dennis Williamson
fonte
4
No OSX, whichnão mostra o caminho para um script personalizado (que está dentro $PATH). typefaz.
wisbucky
3

tente 'localizar identificar'

Chopper3
fonte
5
Isso funciona quando "what" não funciona porque o executável não está no seu PATH atual, mas também tende a vomitar muitas coisas que você não deseja. Filtro do primeiro caminho: "localize o comando | grep bin". Use "qual" primeiro.
dmckee
0

Depende do que você está procurando. A maioria dos utilitários depende da variável do caminho. No entanto, se o que você está procurando estiver em seu caminho, é provável que você não precise realmente saber onde está, a menos que haja várias cópias do mesmo executável.

Isso não se aplica à maioria das coisas em execução no OSX, porque elas não são iguais aos binários linux / unix normais. Aqui estão alguns métodos para encontrar coisas que não estão na sua declaração de caminho.

encontrar:

sudo find / -name <FILE>

Isso encontrará qualquer coisa que exista no sistema de arquivos fornecido como o primeiro argumento. Ele precisa ser executado como root para pesquisar diretórios particulares. Ele também suporta caracteres curinga se você não tiver certeza absoluta do nome.

Terminal:

Se você tiver o arquivo no localizador, poderá abrir uma janela do terminal e soltar o arquivo nela. Terminal com exibe o caminho completo para o arquivo.

Holofote:

Bastante auto-explicativo. Você está doando ciclos de processador para permitir que ele mantenha um índice de seu fi

keegan2149
fonte