
Muitas das respostas do StackOverflow sugerem que é porque cd
é um builtin, mas type cd
ambos type pwd
retornam "shell builtin" e sudo cd
retornam apenas um "comando não encontrado".
Então é cd
tratado como um caso especial, ao contrário de muitas respostas no SO, que é " sudo
só funciona com programas"?
Responder1
pwd
existe tanto como um shell embutido (é por isso que type pwd
retorna que é um shell embutido) e separadamente como umUtilitário principal GNU. A versão pwd
que seu sistema está usando é aUtilitário principal GNUversão. É um executável e, como tal, o sudo pode ser usado para executá-lo; ao contrário cd
de qual é um comando interno do shell.
Você pode verificar isso por si mesmo.
Digite você mesmo esses dois comandos e observe os resultados. (se houver várias versões do mesmo comando em seu sistema, o which
comando informará qual delas está sendo invocada quando você digitá-lo)
which pwd
which cd
Um shell integrado não retornará nenhum caminho de pasta para um executável quando você executar o which
comando. Aqui estão exemplos de saídas de ambos os comandos em meu sistema:
nate@linux:~> which pwd
/usr/bin/pwd
nate@linux:~> which cd
which: no cd in (/home/nate/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin:/home/nate/Scripts:/home/nate/Scripts)
Responder2
Existe um pwd
executável em algum lugar (try whereis pwd
) e sudo
o utiliza.