![从另一个用户的 Shell 运行图形命令](https://linux22.com/image/962330/%E4%BB%8E%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%94%A8%E6%88%B7%E7%9A%84%20Shell%20%E8%BF%90%E8%A1%8C%E5%9B%BE%E5%BD%A2%E5%91%BD%E4%BB%A4.png)
在我的终端里,我做了
$su nextuser
并登录到该帐户。现在,当我尝试通过以下方式打开该用户主目录中的文本文件时
$gedit test.c
我明白了
No protocol specified
Cannot open display:
Run 'gedit --help' to see a full list of available command line options.
如何使用图形文本编辑器显示新用户帐户上的文件?
答案1
从另一个用户的 Shell 运行图形命令
这糟糕命令(参见
man sux
) 会为您处理这个问题,并且采用与 相同的语法su
。
sux - nextuser
gedit test.c
这将自动确保.Xauthority
正确,因此您不必运行任何命令来手动授权任何内容。
图形应用程序倾向于将配置文件写入你的主目录中,如果你在保留的同时以另一个用户身份运行它们$HOME
,它们将尝试以该用户的身份写入配置文件,你的主目录。这将导致无法写入配置,或者导致原始用户的配置混乱(或两者兼而有之)。这就是为什么建议在运行图形应用程序时使用-
标志sux
(或su
)。(对于sudo
,你可以改用图形前端喜欢gksu
/gksudo
和kdesudo
。)
以其他用户身份直接运行图形命令
您可以使用gksu
在苏模式(使用-w
标志)以另一个用户身份运行命令(使用标志-u
):
gksu -w -u nextuser gedit test.c
然而,你可能仍然必须xhost local:nextuser
先运行(正如你在你回答得很好)才能正常工作。如果你使用sudo 模式,但只有管理员才能执行此操作(并且你将使用你的密码而不是nextuser
的密码,因为sudo
而不是su
是后端):
gksu -u nextuer gedit test.c
以其他用户身份运行终端(不只是 Shell)
您可能只想以其他用户的身份运行图形终端程序(即 shell 在“内部”运行的程序)。一旦它运行,从中启动的图形程序也将无缝运行。
您可以使用上面描述的相同方法以gedit
其他用户身份运行。
gksu -w -u nextuser gnome-terminal
gksu -u nextuser gnome-terminal
答案2
以 root 身份运行
echo $DISPLAY
xhost local:nextuser
然后
su - nextuser
export DISPLAY=<the value got from echo $DISPLAY above>
(or SET DISPLAY.. if export does not work)
你一切顺利。:)
答案3
使用-p
选项苏保存环境变量包括;或者根据每个命令DISPLAY
明确设置它或在其前面加上前缀。export