Вопрос

Я использую доступ к тщательному дбуту из некоторых процессов. Беда в том, что он проходит от другого пользователя и сеанс дбута отличается для них. Поэтому я не могу приложить приложение, которое использует дбус через другой процесс, если сеансы разные. Я нашел способ разрешить эту проблему: какой-то скрипт записывает в файл данных сеанса DBUS от основного пользователя (я устанавливаю его при загрузке системы). Вот этот скрипт:

#!/bin/bash
touch /.Xdbus
chmod 666 /.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > /.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /.Xdbus

Вот пример этого файла:

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
export DBUS_SESSION_BUS_ADDRESS

Теперь я просто должен выполнить данные из этого файла, и оба сеанса DBus будут такими же. Вот несколько неприятностей:

#!/bin/bash
if [ -f /.Xdbus ]
then
    source /.Xdbus; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"
else
    echo "File doesnt exist"
fi

Как вы могли видеть, я использую Pidgin в качестве приложения DBUS. Но это бросает ошибку, что нет фиолетового приложения, поэтому сеансы ДБУС разные! Так что команда:

source /.Xdbus

Не работал. Почему?


Уполномоченный

source /.Xdbus; echo $DBUS_SESSION_BUS_ADDRESS; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"; echo $DBUS_SESSION_BUS_ADDRESS;

unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023 No existing libpurple instance detected. unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
Это было полезно?

Решение

На основе вашего обновления, source Команда работает. Поэтому проблема с purple-remote или libpurple или некоторая зависимость, а не с вашим сценарием Bash.

Это не хорошая идея для создания таких файлов в корневом каталоге. Попробуйте выбрать более подходящее место для вашего файла. Один из следующих возможно:

  • /home/username/.Xdbus
  • /var/local/.Xdbus - Возможно, вам придется добавить своего пользователя в группу, которая принадлежит этот каталог
  • /tmp/.Xdbus

Другие советы

Я думаю, что это потому, что вы используете / который является корнем файловой системы. То, что вы хотите. / Или абсолютный путь, как сказал Деннис.

Вы также можете использовать $ PWD / File или $ {pwd} / file

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top