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.
¿Pero entonces sudo pwdtampoco funcionaría? (Siempre pensé que sudo cdlo 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 cdno 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.)
Arjan
2
@Arjan: 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.
Dennis Williamson
2
¡Agradable! 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.)
Arjan
sudo sh -c 'cd dirname'no hace nada por mi
Peter Niederwieser
1
@Arjan Encontré la explicación: es algo así como un hack de compatibilidad profunda. No cumple su función, pero se debe a los efectos secundarios que tiene el verdadero 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?
Volker Siegel
72
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.
Por otro lado, si no hay una contraseña de root, o si no la conoce, sudo es la única opción.
Liam
0
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.
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).
Respuestas:
cd
Es una concha incorporada.sudo
solo 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.fuente
sudo pwd
tampoco funcionaría? (Siempre pensé quesudo cd
lo hace el trabajo, pero simplemente no está viendo el resultado después desudo
devoluciones. Pero eso era sólo una suposición. Tal vez nicd
tampocopwd
en realidad son incorporados en Bash en un Mac. Correrwhich cd
no de hecho me dan resultados. Corrersudo cd /
no me da un error, pero de hecho no da como resultado un cambio en el directorio de trabajo.)pwd
también es un ejecutable externo, por lo que funcionará. Tenga en cuenta que en algunos sistemas, hay uncd
ejecutable, pero en su mayoría es inútil. Intente usarlotype -a cd
es mucho más informativo quewhich
, por cierto.type -a cd
muestra amboscd is a shell builtin
ycd is /usr/bin/cd
en mi Mac. Y asimismo parapwd
yecho
. Y ambossudo pwd
ysudo echo "Hello world"
sí me dan un resultado. Sin embargo,type -a return
solo cedereturn is a shell builtin
, ysudo return 3
me muestrasudo: return: command not found
. Entonces, supongo que la pregunta es: ¿el OP recibe un mensaje de error o el OP no ve elcd
trabajo sin ningún error? (O: qué sistema operativo está usando el OP.)sudo sh -c 'cd dirname'
no hace nada por micd
. Y no puede hacer nada en lugar de fallar cuando el shell actual no tiene uncd
comando. Cualquier caparazón que los humanos puedan usar alguna vezcd
, 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 delcd
comando externo?En su lugar, intente usar
sudo -s
para iniciar un shell raíz y luego simplementecd
en 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!
fuente
Simplemente puede
su
convertirse en root y luegocd
todo 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.fuente
Hay dos formas en que "no funcionará", dependiendo de su sistema operativo:
Si su sistema operativo sigue a POSIX, la ejecución
sudo cd
hará 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 cd
ejecuta sin error, pero no cambia el directorio de trabajo actual de su shell actual.(referencia: esta respuesta )
De lo contrario, la ejecución
sudo cd
hará 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 errorsudo: cd: command not found
).Entonces
sudo cd
corre con error.fuente