Eu sei que quando você está no shell, os únicos comandos que podem ser usados são aqueles que podem ser encontrados em algum diretório definido no PATH. Mesmo eu não sei como ver o que os dirs estão na minha variável PATH (e essa é outra boa pergunta que pode ser respondida), o que eu gostaria de saber é:
Venho descascar e escrever:
$ lshw
Quero conhecer um comando no shell que possa me dizer ONDE esse comando está localizado. Em outras palavras, onde esse "arquivo executável" está localizado?
Algo como:
$ location lshw
/usr/bin
Qualquer um?
fonte
locate
isso, pode ajudar a encontrar arquivos. Ele usa um banco de dados mantido peloupdatedb
qual é executado a partir de um trabalho cron. Comolocate
pesquisa em um banco de dados e não em todo o sistema de arquivos, é muito mais rápido do quefind
(que poderia ser usado como último recurso).type -a
pode ser confuso. por exemplo, no caso denvm
qual é uma função bash que eu precisava fazer:type -a nvm | head -n1
descobrir o que exatamente énvm
.type -a
gera a definição da função e o tipo de executável. O risco do usohead
é que, no caso de nomes com mais de um tipo, os tipos adicionais não seriam gerados. Você pode querer olhartype -t
.Como isso:
Para ver todos os comandos que correspondem ao seu caminho:
fonte
which
é problemático porque há várias implementações, muitas das quais fazem a coisa errada e outras parecem funcionar bem, mas têm surpresas estranhas. Você deve preferirtype
.type -a lshw
PATH
é uma variável de ambiente e pode ser exibida com o comando echo:É uma lista de caminhos separados pelo caractere de dois pontos '
:
'O
which
comando informa qual arquivo é executado quando você executa um comando:às vezes o que você recebe é o caminho para um link simbólico; se você deseja rastrear esse link para onde reside o executável real, poderá usar
readlink
e alimentar a saída dewhich
:O
-f
parâmetro instruireadlink
a continuar seguindo o link simbólico recursivamente.Aqui está um exemplo da minha máquina:
fonte
fonte
No Shell TENEX C, tcsh , é possível listar a (s) localização (ões) de um comando ou, se for um comando interno, usando o
where
comando, por exemplo:fonte
O shell Korn,,
ksh
oferece owhence
embutido, que identifica outros embutidos, macros, etc. do shellwhich
. Porém, o comando é mais portátil.fonte
whence -a
é semelhante ao do Bashtype -a
.Uma alternativa para
type -a
écommand -V
Como na maioria das vezes estou interessado apenas no primeiro resultado, também cano da cabeça. Dessa forma, a tela não será inundada com código no caso de uma função bash.
fonte