![使用“su”和内联变量启动 Linux 命令](https://linux22.com/image/1250188/%E4%BD%BF%E7%94%A8%E2%80%9Csu%E2%80%9D%E5%92%8C%E5%86%85%E8%81%94%E5%8F%98%E9%87%8F%E5%90%AF%E5%8A%A8%20Linux%20%E5%91%BD%E4%BB%A4.png)
我正在尝试使用 su 从命令行为另一个用户创建 mozilla 配置文件。
当我从 X 尝试时,它将会起作用。
su myuser -c 'mozilla -CreateProfile newprofile'
但我的目标是将其嵌入到脚本中,并且它只会在命令行模式下执行。如果我从命令行尝试此操作,它也会起作用:
DISPLAY=1.0 mozilla -CreateProfile newprofile
问题是如何在“su”命令中嵌入“DISPLAY”变量,因为这会失败:
su myuser -c 'DISPLAY=1.0 mozilla -CreateProfile newprofile'
答案1
您是否尝试过这个:
su myuser -c 'export DISPLAY=\"1.0\"; mozilla -CreateProfile newprofile'
这确实应该发布在 superuser.com 上
通过转义变量 DISPLAY 中的引号来尝试该变体...
答案2
这对我有用:
su sh -c 'DISPLAY=1.0 echo $DISPLAY'
您遇到的错误到底是什么?
答案3
这个如何:
su myuser -c "sh -c 'DISPLAY=1.0 mozilla -CreateProfile newprofile'"
答案4
TEMPXAUTH=$(xauth nlist) su -c 'xauth nmerge <<< "$TEMPXAUTH" && mozilla -CreateProfile newprofile'
临时文件也可以起作用。