سؤال

أنا أستخدم الوصول إلى 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top