¿Por qué el CD 'sudo bash && cd desktop' no ingresa a la carpeta del escritorio?

¿Por qué el CD 'sudo bash && cd desktop' no ingresa a la carpeta del escritorio?

Tengo una carpeta con chmod 000permisos con muchas cosas diferentes, la forma en que entro es bashcomenzando sudoejecutando sudo bash.

¿Por qué no puedo hacerlo &&? Quiero cdingresar 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 bashusuario con el que se ejecuta sudo.

Podrías sentirte tentado a intentarlo.

sudo bash -c 'cd desktop'

pero eso no funciona porque bashsale después cd desktop.

Puedes probar:

sudo sh -c 'cd desktop && exec bash'

que "funciona" (es decir, lo ubica en el directorio desktopen 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.

información relacionada