Tengo una carpeta con chmod 000
permisos con muchas cosas diferentes, la forma en que entro es bash
comenzando sudo
ejecutando sudo bash
.
¿Por qué no puedo hacerlo &&
? Quiero cd
ingresar al directorio con un comando como este:
sudo bash && cd desktop
Cuando ejecuto esto, todavía estoy en ~
cuál es el directorio predeterminado.
tengo que ejecutar esto en su lugar
sudo bash
cd desktop
Además, el escritorio no es la carpeta, es una subcarpeta del escritorio, pero no importa. Es lo mismo de todos modos.
Respuesta1
La parte posterior &&
se ejecuta en el shell actual, no es un argumento entregado al bash
usuario con el que se ejecuta sudo
.
Podrías sentirte tentado a intentarlo.
sudo bash -c 'cd desktop'
pero eso no funciona porque bash
sale después cd desktop
.
Puedes probar:
sudo sh -c 'cd desktop && exec bash'
que "funciona" (es decir, lo ubica en el directorio desktop
en un shell Bash con uid=0). Prefiero emitir los dos comandos por separado que esa sola línea.
Respuesta2
Funciona, pero no como esperas. &&
espera hasta que el comando se complete. Si el resultado en ese punto es true
, ejecutará la siguiente instrucción. Entonces, si escribe bash && cd desktop
, primero se le presentará un shell bash. Si escribes exit
, volverás al shell en el que estabas antes yentoncesel directorio cambiará a la carpeta del escritorio.
En términos de la funcionalidad que describí, sudo es intrascendente. Su caso de uso para sudo probablemente no sea la mejor práctica y debería considerar otras soluciones.