libpurple لا يعمل من باش
سؤال
أنا أستخدم الوصول إلى DBUs الشاملة من بعض العمليات. المشكلة هي أنه يعمل من مستخدم آخر وأن جلسة DBUs مختلفة بالنسبة لهم. لذلك لا يمكنني تصنيف التطبيق الذي يستخدم DBUs من خلال عملية أخرى إذا كانت الجلسات مختلفة. لقد وجدت الطريقة لحل هذه المشكلة: يكتب بعض البرنامج النصي في بيانات جلسة 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. لكنه يلقي الخطأ ، أنه لا يوجد تطبيق أرجواني ، وبالتالي فإن جلسات DBUs مختلفة! لذلك كوماند:
source /.Xdbus
لم ينجح. لماذا ا؟
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
المحلول
بناءً على التحديث الخاص بك ، source
القيادة تعمل. لذلك المشكلة مع purple-remote
أو libpurple
أو بعض التبعية وليس مع نص Bash الخاص بك.
ليس من الجيد إنشاء مثل هذه الملفات في دليل الجذر. حاول اختيار موقع أكثر ملاءمة لملفك. واحد مما يلي ربما:
/home/username/.Xdbus
/var/local/.Xdbus
- قد تضطر إلى إضافة المستخدم الخاص بك إلى المجموعة التي تمتلك هذا الدليل/tmp/.Xdbus
نصائح أخرى
أعتقد أن ذلك لأنك تستخدم / ما هو جذر نظام الملفات. ما تريده هو ./ أو المسار المطلق كما قال دينيس.
يمكنك أيضًا استخدام $ pwd/file أو $ {pwd}/file