GNU bash,版本 4.3.48(1)-release(x86_64-pc-linux-gnu),Ubuntu 16.04.3 LTS。
我需要获取 DBUS_SESSION_BUS_ADDRESS 的值并将其保存到文件中。
如果我set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp
在 Bash 中运行,我会DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-N1wmwpEVBj
在.DBUS_temp
文件中看到类似的东西没问题。
但是当我尝试在脚本中运行命令时,发生了以下情况:
set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp
如果使用,则会创建一个空文件。BASH_EXECUTION_STRING='set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp'
su -c 'set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp' user
如果使用则位于文件中。
我的代码/实现有什么错误?
感谢您的时间。
答案1
我发布了这个答案来回答我自己的问题以关闭它。
感谢帮助穆鲁和这个问题的答案我弄清楚了如何以适合我的目的的形式获取 DBUS_SESSION_BUS_ADDRESS 变量DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-N1wmwpEVBj
(使用这个我甚至不需要将变量保存到文件中):
PID=$(pgrep gnome-session)
export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ)
使用上述答案中的代码最终只会获取unix:abstract=/tmp/dbus-N1wmwpEVBj
DBUS_SESSION_BUS_ADDRESS 变量的一部分。它对我来说不起作用。