質問

いくつかのプロセスから徹底的なDBUへのアクセスを使用しています。問題は、別のユーザーから実行され、DBUのセッションが異なることです。したがって、セッションが異なる場合、別のプロセスでDBUを使用するアプリケーションをACCesできません。このトラブルを解決する方法を見つけました。一部のスクリプトは、メインユーザーからのファイル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