Libpurple не работает от bash
Вопрос
Я использую доступ к тщательному дбуту из некоторых процессов. Беда в том, что он проходит от другого пользователя и сеанс дбута отличается для них. Поэтому я не могу приложить приложение, которое использует дбус через другой процесс, если сеансы разные. Я нашел способ разрешить эту проблему: какой-то скрипт записывает в файл данных сеанса 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