Libpurple ne fonctionne pas de bash
Question
J'utilise l'accès DBUS approfondie de certains processus. Le problème est qu'il fonctionne d'un autre utilisateur et session de DBUS est différent pour eux. Donc, je demande ne peux plus accéder qui utilise DBUS par un autre processus si les sessions sont différentes. J'ai trouvé le moyen de résoudre ce trouble: quelques écritures de script dans les données de session de dbus de fichiers de l'utilisateur principal (je l'ai mis à la charge du système). Voici ce script:
#!/bin/bash
touch /.Xdbus
chmod 666 /.Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > /.Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> /.Xdbus
Voici un exemple de ce fichier:
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-9yStbCgjwb,guid=0deadb6519676638e1e93f5000000023
export DBUS_SESSION_BUS_ADDRESS
Maintenant, je viens d'exécuter les données de ce fichier et les deux sessions de DBUS seront identiques. Voici quelques problèmes:
#!/bin/bash
if [ -f /.Xdbus ]
then
source /.Xdbus; /usr/bin/purple-remote "setstatus?status=away&message=At lunch"
else
echo "File doesnt exist"
fi
Comme vous pouvez le voir, j'utilise pidgin comme application DBUS. Mais il jette l'erreur, qu'il n'y a pas d'application de pourpre, de sorte que les séances de DBUS sont différentes! Alors COMAND:
source /.Xdbus
ne fonctionne pas. Pourquoi?
UPD
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
La solution
Sur la base de votre mise à jour, la commande source
fonctionne. Le problème est donc avec purple-remote
ou libpurple
ou une dépendance plutôt que votre script Bash.
Il est pas une bonne idée de créer ces fichiers dans le répertoire racine. Essayez de choisir un endroit plus approprié pour votre fichier. L'un des éléments suivants peut-être:
-
/home/username/.Xdbus
-
/var/local/.Xdbus
- vous pourriez avoir à ajouter votre utilisateur au groupe qui possède ce répertoire -
/tmp/.Xdbus
Autres conseils
Je pense qu'il est parce que vous utilisez / ce qui est la racine du système de fichiers. Qu'est-ce que vous voulez est un chemin ou ./ absolu comme dit Dennis.
Vous pouvez également utiliser $ PWD / fichier ou {$ PWD} / fichier