Por que digitar sudo cd, o que quer que não mude o diretório?
Por que digitar sudo cd, o que quer que não mude o diretório?
Respostas:
cd
é um shell embutido. sudo
só funciona com executáveis. Você poderia fazer isso, sudo sh -c 'cd dirname'
mas assim que o shell sair, você retornará ao diretório em que iniciou. Se você diz o que está tentando realizar, posso ajudá-lo a encontrar uma maneira de fazer isso.
sudo pwd
também não funcionaria? (Eu sempre imaginei que sudo cd
faz o trabalho, mas você simplesmente não estamos vendo o resultado depois sudo
retorna. Mas isso foi apenas um palpite. Talvez nem cd
nem pwd
são realmente incorporado em Bash em um Mac. Correr which cd
faz de fato me dar resultados. Correndo sudo cd /
não me dá um erro, mas na verdade não resulta em um diretório de trabalho alterado).
pwd
também é um executável externo, por isso funcionará. Observe que em alguns sistemas, existe um cd
executável, mas é principalmente inútil. Tente usá- type -a cd
lo muito mais informativo do que which
, a propósito.
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ão um resultado. No entanto, type -a return
apenas rende return is a shell builtin
e sudo return 3
me mostra sudo: return: command not found
. Então, acho que a pergunta é: o OP recebe uma mensagem de erro ou o OP não vê o cd
trabalho sem nenhum erro? (Ou: o que OS é o OP usando.)
sudo sh -c 'cd dirname'
não faz nada por mim.
cd
tem. E não pode fazer nada em vez de falhar quando o shell atual não possui um cd
comando. Qualquer concha que possa ser usada por humanos tem cd
, inclusive /bin/sh
. Mas um programa que é, visto no kernel do sistema operacional, um shell pode ser muito mais simples que isso, mesmo apenas algumas linhas de código. Consulte Qual é o objetivo do cd
comando externo?
Em vez disso, tente usar sudo -s
para iniciar um shell raiz e depois simplesmente cd
para o diretório
Quando terminar como root, pressione CtrlDou digite exit
.
Como Arjan sugere em seu comentário abaixo, é importante notar que, como root, pode-se facilmente danificar componentes essenciais do sistema. Use com cuidado!