“su -” 和 “bash -l” 有什么区别?

“su -” 和 “bash -l” 有什么区别?

su -和有什么区别bash -l

我有这个问题:

:/etc/profile.d# su -
无法打开显示“默认显示”
目录:/root
2013 年 11 月 28 日星期四 11:23:57 CET

现在我尝试找出出现此消息的原因。

:~ # 退出
:/etc/profile.d# bash -x -l
+ 测试-f /proc/mounts
+ 案例“`/bin/ls -l /proc/$$/exe`”
++ /bin/ls -l /proc/17167/exe
+是=bash
+ 读取-t 1 ar
...

在第二个输出中,我没有看到“无法打开显示”消息。那么区别是什么?

答案1

第一个命令将您以 root 身份登录;该选项的-意思是su Manpage

-l, --login 提供与用户直接登录时所期望的类似的环境。

bash -l第二条命令不是以 root 身份登录。该-l选项的意思是(再次从bash Manpage):

-l 使 bash 表现得像被调用为登录 shell 一样

但是,这指的是different user,在本例中指的是您自己,而不是 root。因此,该bash -l命令维护允许控制您的 X 会话的 MIT magic cookie,而 无法su -c做到这一点,并且由于您没有适当的 MIT magic cookie,因此您无法控制 X 会话。

如果你想解决这个问题,请插入此语句

  export XAUTHORITY=/home/your_name/.Xauthority

在文件 /root/.bashrc 中,您将能够以 root 身份打开 GUI,即使在使用 su 而不是使用正确的登录 shell 时也是如此。

相关内容