Как использовать 'набор | grep 'в скрипте правильно, чтобы получить значение переменной DBUS_SESSION_BUS_ADDRESS?

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, который в порядке .

Но когда я пытаюсь выполнить команду в сценарии, происходит следующее:

  1. Пустой файл создается, если используется 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.

Что не так в моем коде / реализации?

Спасибо за ваше время.

0
задан 24 November 2017 в 05:08

1 ответ

Я отправляю этот ответ на свой вопрос, чтобы закрыть его.

Благодаря помощи 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. Это не работает для меня.

0
ответ дан 24 November 2017 в 05:08

Другие вопросы по тегам:

Похожие вопросы: