如何使用’set | 正确编写脚本中的grep’以获取DBUS_SESSION_BUS_ADDRESS变量的值?

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中的set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp我在set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp中有类似于DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-N1wmwpEVBj.DBUS_temp ,这是正常的

但是当我尝试在脚本中运行命令时,会发生以下情况:

  1. 如果set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp则创建一个空文件 set | grep DBUS_SESSION_BUS_ADDRESS > /home/user/.DBUS_temp
  2. 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 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

我的代码/实现有什么问题?

感谢您的时间。

我把这个答案发给我自己的问题来关闭它。

感谢muru的帮助和这个问题的答案,我想出了如何以DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-N1wmwpEVBj的forms获取DBUS_SESSION_BUS_ADDRESS变量,这对我来说是合适的(使用这个我甚至都没有需要将变量保存到文件中):

 PID=$(pgrep gnome-session) export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ) 

使用上述答案中的代码最终只获得了unix:abstract=/tmp/dbus-N1wmwpEVBj DBUS_SESSION_BUS_ADDRESS变量的一部分。 它对我不起作用。