¿Cuál es la diferencia entre "su -" y "bash -l"?

¿Cuál es la diferencia entre "su -" y "bash -l"?

¿Cuál es la diferencia entre su -y bash -l?

Tengo este problema:

:/etc/profile.d # su -
No se puede abrir la pantalla "pantalla predeterminada"
Directorio: /raíz
Jueves 28 de noviembre 11:23:57 CET 2013

Ahora trato de averiguar por qué aparece este mensaje.

:~ # cerrar sesión
:/etc/profile.d # bash -x -l
+ prueba -f /proc/montajes
+ caso "`/bin/ls -l /proc/$$/exe`" en
++ /bin/ls -l /proc/17167/exe
+ es=golpe
+ leer -t 1 ar
...

En el segundo resultado no tengo señales del mensaje "no se puede abrir la pantalla". Entonces, ¿cuál es la diferencia?

Respuesta1

El primer comando inicia sesión como root; la opción -significa, desde su Manpage:

-l, --login Proporciona un entorno similar al que el usuario esperaría si hubiera iniciado sesión directamente.

El segundo comando, bash -l, hacenoinicie sesión como root. Es cierto que la -lopción significa (nuevamente del bash Manpage):

-l Hacer que bash actúe como si hubiera sido invocado como un shell de inicio de sesión

Sin embargo, esto se refiere a un different user, en este caso a usted mismo en lugar de a root. Por lo tanto, el bash -lcomando mantiene la cookie mágica del MIT que permite el control de su sesión X, mientras que su -cno es capaz de hacerlo y, como no tiene la cookie mágica del MIT adecuada, no puede tomar el control de la sesión X.

Si desea solucionar este problema, inserte esta declaración

  export XAUTHORITY=/home/your_name/.Xauthority

en el archivo /root/.bashrc, y podrá abrir GUI como root incluso cuando esté solicitando en lugar de utilizar un shell de inicio de sesión adecuado.

información relacionada