GNU bash, версия 4.3.48 (1) -релиз (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
. Что не так в моем коде / реализации?
Спасибо за ваше время.
Я отправляю этот ответ на свой вопрос, чтобы закрыть его.
Благодаря помощи muru и ответа на этот вопрос я выяснил, как получить переменную 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. Это не работает для меня.