Questão Por que o “sudo cd” não funciona?


Por que digitar sudo cd whatever não vai mudar o diretório?


74


origem


Vejo askubuntu.com/questions/291666/… - John


Respostas:


cd é um shell embutido. sudo só funciona com executáveis. Você poderia fazer sudo sh -c 'cd dirname' mas assim que o shell sair, você retornará ao diretório de onde partiu. Se você disser o que você está tentando realizar, então eu posso ajudá-lo a encontrar uma maneira de fazer isso.


49



Mas então sudo pwd não funcionaria também? (Eu sempre imaginei que sudo cd  faz trabalho, mas você simplesmente não está vendo o resultado depois sudo retorna. Mas isso foi apenas um palpite. Talvez nem cd nem pwd na verdade são incorporados no Bash em um Mac. Corrida which cd  faz de fato, me dê resultados. Corrida sudo cd / não me dá um erro, mas na verdade não resulta em um diretório de trabalho alterado.) - Arjan
@Arjan: pwd também é um executável externo, então funcionará. Note que em alguns sistemas, existe um cd executável, mas é praticamente inútil. Tente usar type -a cd é muito mais informativo do que which, a propósito. - Dennis Williamson
Agradável! type -a cd mostra ambos cd is a shell builtin e cd is /usr/bin/cd no meu Mac. E da mesma forma para pwd e echo. E ambos sudo pwd e sudo echo "Hello world" me dê um resultado. Contudo, type -a return apenas rendimentos return is a shell builtine sudo return 3 me mostra sudo: return: command not found. Então, eu acho que a pergunta é: o OP recebe uma mensagem de erro, ou o OP não vê o cd trabalhar sem nenhum erro? (Ou: qual SO é o OP usando.) - Arjan
sudo sh -c 'cd dirname' não faz nada por mim. - Peter Niederwieser
@ Pedro: Veja a parte da minha resposta que começa "mas ..." - Dennis Williamson


Em vez disso, tente usar sudo -s para iniciar um shell de root e, em seguida, simplesmente cd no diretório.
Quando você terminar como root, pressione CtrlD ou digite exit.


Como Arjan sugere em seu comentário abaixo, é importante notar que, como root, pode-se facilmente danificar os componentes essenciais do sistema. Use com cuidado!


66



Mas: tenha cuidado, uma vez que uma é a raiz ... - Arjan


Você pode simplesmente su para se tornar root e depois cd Tudo o que você quer ... Eu sei que uma resposta já foi aceita, mas se uma não estiver na lista de sudoers, essa é a única opção.


7



Por outro lado, se não houver uma senha root ou se você não souber, o sudo é a única opção. - Liam