Por que 'sudo pwd' funciona, mas não 'sudo cd'?

Por que 'sudo pwd' funciona, mas não 'sudo cd'?

Muitas das respostas do StackOverflow sugerem que é porque cdé um builtin, mas type cdambos type pwdretornam "shell builtin" e sudo cdretornam apenas um "comando não encontrado".

Então é cdtratado como um caso especial, ao contrário de muitas respostas no SO, que é " sudosó funciona com programas"?

Responder1

pwdexiste tanto como um shell embutido (é por isso que type pwdretorna que é um shell embutido) e separadamente como umUtilitário principal GNU. A versão pwdque 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 cdde 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 whichcomando 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 whichcomando. 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 pwdexecutável em algum lugar (try whereis pwd) e sudoo utiliza.

informação relacionada