1
resposta

Duvida no comportamento do which e type

Oi gente. O Guilherme falou que quando um comando tem builtin, o bash vai executar sempre ele primeiro. Porem surgiu a duvida com o comando pwd:

rallels@ubuntu-linux-22-04-desktop:~$ type -a pwd
pwd is a shell builtin
pwd is /usr/bin/pwd
pwd is /bin/pwd
parallels@ubuntu-linux-22-04-desktop:~$ which pwd
/usr/bin/pwd

Porque, quando eu vou executar o "which pwd" ele nao responde que vai executar o builtin?

1 resposta

Olá Rafael, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Neste caso, o comando which (qual em português) não está informando que pwd é um comando interno (builtin) porque este comando (which) é projetado para nos informar a localização de um executável, ou seja, qual é o script ou programa que será executado quando chamarmos um determinado comando.

Ou seja, a saída do comando which pwd está mostrando a localização do executável (/usr/bin/pwd), que é o local onde o comando pwd é encontrado no sistema de arquivos.

Por outro lado, o comando type nos informa que pwd é um comando interno (builtin), o que significa que o próprio terminal tem uma implementação interna desse comando.

Portanto, which é projetado para nos mostrar a localização do executável de um comando, enquanto type é usado para determinar o tipo de comando (builtin, alias, ou executável externo). Ou seja, são comandos com objetivos diferentes.

A título de curiosidade, para executar o comando which pdw e ser retornado o tipo do comando, podemos utilizar a sintaxe:

type -a which pwd

Resultado:

which is a shell builtin
which is /usr/bin/which
which is /bin/which
pwd is a shell builtin
pwd is /usr/bin/pwd
pwd is /bin/pwd

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!