gnome-sessionsの再起動時にすべてのtmuxシェルの環境変数を設定する

gnome-sessionsの再起動時にすべてのtmuxシェルの環境変数を設定する

解決するこの問題、tmuxを再起動せずにgnomeを再起動するたびに、すべてのシェルの環境変数を設定する必要がありますDBUS_SESSION_BUS_ADDRESS(非常に一般的です)。tmuxこの問題をどのように最適に解決できますか?

この問題をよりきれいに解決する他の方法はありますか?

答え1

dbus-launchこの特別なケースでは、Gnomeを実行して任意のD-Busアドレスを生成するのではなく、dbus-daemonXセッションの最初に明示的に開始し、固定アドレス(たとえばunix:path=~/.dbus-$HOSTNAME-$DISPLAY

の情報を考えるとエラーレポート、あなたはそれを離れて、アプリケーションがルートunset DBUS_SESSION_BUS_ADDRESSウィンドウのプロパティからバスアドレスを見つけることができます。

一般的なケースでは、お客様の評価は正確です。ptrace現在持っているのは、(ApparmorやSELinuxなどのセキュリティフレームワークが原因でプログラムがクラッシュしたり機能しなくなる可能性がある)、シェルコマンドの挿入(Windowsでのみフォーマットが有効)などの信頼できない方法です。シェルプロンプトで)。すべてのシェルプロンプト(zshpreexecまたはbashを使用)でコマンドを実行すると、少なくともPROMPT_COMMAND問題が発生するリスクはありません。

別の解決策は、呼び出しをLD_PRELOAD傍受するライブラリですgetenv。過度な感じもします。

最良のオプションは、間接レベルを作成してアプリケーションにタスクを実行させることです。つまり、環境変数の値が有効なままになるようにソートし、アプリケーションにコンテキスト認識方式で解釈するようにします。アプリケーションにルートウィンドウのプロパティでD-Busアドレスを照会させることがこのアプローチの一例です。

関連情報