Bashスクリプト(.bashrcなど)でXセッションを検出する

Bashスクリプト(.bashrcなど)でXセッションを検出する

最近、私はこれをxset b off私の.bashrcに入れました。これで、ttyやssh(Xセッションの外など)を介してログインしたときに表示されるエラーのため、迷惑になります。

私の最初の考えは[[ -z "$SOME_VAR" ]] && xset b off(まあ、テスト結果が出てきた。変数が設定されていて空です。他の質問です。)しかし、どのSOME_VARが正しいですか?

そのため、Xで設定された変数とttyから欠落している変数を確認するために、setttyの出力をurxvtの出力と比較しました。set予想通り、多くの違いがあります(私に関連する違いのみがリストされています)。

  • DESKTOP_SESSION
  • DISPLAY
  • GDMSESSION
  • SESSION_MANAGER
  • WINDOWID
  • WINDOWPATH
  • XAUTHORITY
  • XDG_SESSION_COOKIE
  • XDG_CONFIG_DIRS
  • XDG_DATA_DIRS
  • XDG_MENU_PREFIX

セッションXにあることをテストする最も正確で一般的な方法は何ですか?可能な限り多くのディストリビューション、プラットフォーム、およびデスクトップ環境で実行できるのですか?

それとも、環境変数をテストするよりも良い方法はありますか?

ベストアンサー1

ディスプレイサーバーが利用可能で有効であることをテストする簡単で効果的な方法は、を使用することです。変数が無効な値に設定される可能性があるため、xhost常に変数の値を調べることはできません。DISPLAY

if xhost >& /dev/null ; then echo "Display exists"
else echo "Display invalid" ; fi

crontab私がこれを行う理由は、モニターがあるときはモニターで実行されますが、モニターがないときは動作が異なる複数のスクリプトがユーザーに実行されているためです。私の上部には変数がまだ存在していなくてもに設定crontabしました。で始まるスクリプトは、モニターの有無にかかわらず起動されます。これにより、同じスクリプト内にディスプレイが表示され、消えるタイミングを動的に検出できます。DISPLAY:0crontab@reboot

注:> = 4>&でのみ利用可能です。bashそれ以外の場合> /dev/null 2>&1

おすすめ記事