Eu tenho testado uma instalação mínima do Fedora. Para verificar o caminho para intérpretes como python ou nó, eu normalmente uso which
.
Percebo que which
não está instalado por padrão. Eu poderia adicionar o pacote, mas me pergunto se há um shell embutido que possa ser usado para executar esta tarefa comum.
Estou usando o bash 4.2.
which
. Por que não usar "qual"? O que usar então?Respostas:
Você pode usar
type
, que é um Bash embutido:Para obter documentação, consulte
help [t]ype
, que se refere àtype
seção nabash
página do manual.(
help type
imprime as páginas de ajuda de dois componentes internos que começam com a string "type", um dos quais é obsoleto e completamente não relacionado a isso.)fonte
type -a
mim por que os parênteses[t]ype
?type -a
imprimirá tudo o que o argumento aponta, e não apenas o que seria executado ao digitá-lo.which
. Por que não usar "qual"? O que usar então?type -a
é sempre o que ele executaria. Eu faço o mesmo que Glenn e sempre usotype -a
também.type -p
não mostra o caminho se o comando for um alias.type -P
sempre mostra o caminho do comando corretamente. eu acho que. devemos atualizar a resposta aceita comotype -P
@ l0b0Você pode usar
type
oucommand -v
. A saída detype
é legível por humanos; a saída decommand -v
pode ser executada pelo Bash.Observe que eles são realmente um pouco diferentes.
type
ecommand
procure o valor de hash do comando. Ou seja, se você digitarcmd
,type cmd
oucommand -v cmd
vai dizer exatamente o que vai ser executado. Eles também trabalham com aliases, funções do Bash e componentes internos do Bash (emboratype -p
os ignorem e retornem apenas arquivos verdadeiros).which
apenas faz uma pesquisa no PATH. Isso é diferente porque:which
, mas a execução desse comando usará o valor do hash (você pode forçar a atualização do hash no Bash comhash -r
).Normalmente, as pessoas realmente querem
type
, nãowhich
pelo menos para uso interativo, pois usam para descobrir "de onde vem esse comando quando eu o executo?" Você só deve usarwhich
se realmente deseja fazer uma pesquisa PATH.fonte
command -v
é o equivalente deksh
whence
.where
,whence
e, clarowho
, tambémwhy
, ewhen
? Por que não existewhat
?echo 'main(){printf("what\n");}' | sudo cc -x c - -o /usr/local/bin/what