Existe uma festa para 'qual'?

16

Eu tenho testado uma instalação mínima do Fedora. Para verificar o caminho para intérpretes como python ou nó, normalmente uso which .

Percebo que which não está instalado por padrão. Eu poderia adicionar o pacote, mas gostaria de saber se há um shell embutido que possa ser usado para executar essa tarefa comum.

Estou usando o bash 4.2.

    
por mikemaccana 05.02.2014 / 13:16

2 respostas

26

Você pode usar type , que é um Bash incorporado:

$ type -P which
which is /usr/bin/which

Para documentação, consulte help [t]ype , que se refere à seção type na página bash man.

( help type imprime as páginas de ajuda para dois builtins que começam com a string " type ", um dos quais é obsoleto e completamente não relacionado a isso.

    
por 05.02.2014 / 13:31
10

Você pode usar type ou command -v . A saída de type é legível por humanos; a saída de command -v pode ser executada pelo Bash.

Note que eles são realmente um pouco diferentes. type e command pesquisam o valor de hash do comando. Ou seja, se você digitar cmd , type cmd ou command -v cmd dirá exatamente o que será executado. Eles também trabalham em aliases, funções Bash e Bash builtins (embora type -p os ignore e retorne apenas arquivos verdadeiros).

which apenas faz uma pesquisa no PATH. Isso é diferente porque:

  • Se houver um alias, função ou integrado com o mesmo nome, ele será chamado.
  • Se um comando foi adicionado anteriormente no PATH desde o último hash, ele será encontrado por which , mas a execução desse comando usará o valor com hash (você pode forçar a atualização do hash no Bash com hash -r ) .

Normalmente, as pessoas realmente querem type , não which , pelo menos para uso interativo, pois usam para descobrir "de onde vem esse comando quando eu o executo?" Você só deve usar which se realmente quiser fazer uma pesquisa PATH.

    
por 05.02.2014 / 17:06

Tags