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 时也是如此。