¿Por qué escribir sudo cd lo que no cambiará el directorio?
¿Por qué escribir sudo cd lo que no cambiará el directorio?
Respuestas:
cdEs una concha incorporada. sudosolo funciona con ejecutables. Podría hacerlo, sudo sh -c 'cd dirname'pero tan pronto como el shell salga, volverá al directorio desde el que comenzó. Si dices qué es lo que estás tratando de lograr, entonces puedo ayudarte a encontrar una manera de hacerlo.
sudo pwdtampoco funcionaría? (Siempre pensé que sudo cd lo hace el trabajo, pero simplemente no está viendo el resultado después de sudodevoluciones. Pero eso era sólo una suposición. Tal vez ni cdtampoco pwden realidad son incorporados en Bash en un Mac. Correr which cd no de hecho me dan resultados. Correr sudo cd /no me da un error, pero de hecho no da como resultado un cambio en el directorio de trabajo.)
pwdtambién es un ejecutable externo, por lo que funcionará. Tenga en cuenta que en algunos sistemas, hay un cdejecutable, pero en su mayoría es inútil. Intente usarlo type -a cdes mucho más informativo que which, por cierto.
type -a cdmuestra ambos cd is a shell builtiny cd is /usr/bin/cden mi Mac. Y asimismo para pwdy echo. Y ambos sudo pwdy sudo echo "Hello world"sí me dan un resultado. Sin embargo, type -a returnsolo cede return is a shell builtin, y sudo return 3me muestra sudo: return: command not found. Entonces, supongo que la pregunta es: ¿el OP recibe un mensaje de error o el OP no ve el cdtrabajo sin ningún error? (O: qué sistema operativo está usando el OP.)
sudo sh -c 'cd dirname'no hace nada por mi
cd. Y no puede hacer nada en lugar de fallar cuando el shell actual no tiene un cdcomando. Cualquier caparazón que los humanos puedan usar alguna vez cd, incluido /bin/sh. Pero un programa que es, visto desde el núcleo del sistema operativo, un shell puede ser mucho más simple que eso, incluso solo un par de líneas de código. Consulte ¿Cuál es el punto del cdcomando externo?
En su lugar, intente usar sudo -spara iniciar un shell raíz y luego simplemente cden el directorio.
Cuando haya terminado como root, presione CtrlDo escriba exit.
Como Arjan insinúa en su comentario a continuación, es importante tener en cuenta que, como root, uno puede dañar fácilmente los componentes esenciales del sistema. Úselo con cuidado!
Simplemente puede suconvertirse en root y luego cdtodo lo que quiera ... Sé que una respuesta ya ha sido aceptada, pero si una no está en la lista de sudoers, entonces esta es la única opción.
Hay dos formas en que "no funcionará", dependiendo de su sistema operativo:
Si su sistema operativo sigue a POSIX, la ejecución sudo cdhará que el comando externo "cd" (generalmente ubicado en /usr/bin/cd) se ejecute en un proceso bifurcado como usuario root. Ese proceso cambia los directorios con éxito. Una vez que se realiza ese proceso, volverá a su shell normal, que todavía está en el directorio donde comenzó.
Entonces se sudo cdejecuta sin error, pero no cambia el directorio de trabajo actual de su shell actual.
(referencia: esta respuesta )
De lo contrario, la ejecución sudo cdhará que suceda lo siguiente. Su computadora buscará a través de su RUTA, tratando de encontrar un ejecutable llamado "cd". No encontrará uno. (solo existe el comando de shell incorporado "cd", y ese no es un archivo ejecutable). Por lo tanto, obtienes un error. (En Ubuntu, recibo el mensaje de error sudo: cd: command not found).
Entonces sudo cdcorre con error.