DESCRIPTION
The type utility shall indicate how each argument would be interpreted if used as a command name.
(…)
The following exit values shall be returned:
0
Successful completion.>0
An error occurred.
“Conclusão bem-sucedida” significa que o argumento pode ser interpretado como um nome de comando, caso em que a consulta de comando será bem-sucedida. Um erro significa que o argumento não pode ser interpretado como um nome de comando, caso em que a pesquisa de comandos falharia.
O status de retorno de type
é uma maneira totalmente POSIX-portátil de verificar se um nome de comando é válido ou o mais próximo possível. Existem sistemas mais antigos em que type
retorna 0 em comandos inválidos (como OSF1 V3, mas acho que OSF1 V4 é compatível com POSIX, pelo menos quando o ambiente shell está no modo POSIX ( BIN_SH=xpg4
)), mas compatível com POSIX os sistemas retornam 0 somente após o sucesso.
O que você não pode confiar com type
é o formato de saída, ou se a saída será em stdout ou stderr.
É impossível garantir que o resultado de type
corresponda ao que acontece se você tentar realmente executar o programa. Um executável pode ter sido adicionado ou removido nesse meio tempo, ou pode falhar ao carregar porque o arquivo é inválido ou porque não há memória suficiente. Mas se você está apenas olhando para ver se um comando existe e não está preocupado com casos de borda, if type somecommand >/dev/null 2>/dev/null; …
é o caminho certo.