ターミナルエミュレータがデスクトップセッションで実行されているかどうかをスクリプトで検出するにはどうすればよいですか?

有機大理石

テキストファイルを書き出してエディターで開くスクリプトを実行しています。デスクトップセッションでターミナルエミュレータウィンドウを開いてスクリプトを実行する場合、エディタをのようなグラフィカルなものにしたいと思いgeditます。ただし、電話などでConnectBotを介してログインしている場合(デスクトップセッションなし)、エディターを使用したいと思いますnano

現在、最後のステップを除いて同一の2つの異なるスクリプトを維持する必要があります(または、グラフィカルなスクリプトを実行し、エラーをオフにしてから、でファイルを手動で開きますnano)。ほぼ同一のスクリプトを2つ持つことは、メンテナンスの観点から非効率的です。

スクリプトは、これらの状況のどれにいるのかを検出し、正しいエディターを開くことができますか?

(スクリプトがターミナルエミュレータウィンドウで実行されているか、ダブルクリックされているかを検出する方法を見つけましたが、ウィンドウがデスクトップで実行されているかどうかを検出する方法はまだ見つかりませんでした...私は思いませんグーグルする正しい用語を知っている)

pa4080

条件$DISPLAY内のトリガーとして環境変数使用できますif通常、この変数に値がある場合、グラフィカルアプリケーションを実行できます。

これが例です:

if [[ -z $DISPLAY ]]
then
    nano
else
    gedit
fi

オペレータは、-zENVVARはときtrueを返します$DISPLAY空で、スクリプトが実行されnano、それが実行される他のすべての場合には、gedit


@ vurp0のこのコメントによると

最も近代的なウェイランドは(FedoraとUbuntuのでは、デフォルトのデスクトップのような)デスクトップ上で、$DISPLAYまだ原因(XWaylandを介して)後方互換性に設定されているが、より堅牢なスクリプトのためには、両方のためのテストには良いだろう$DISPLAY$WAYLAND_DISPLAY確認します。

次の方法でテスト式を変更することをお勧めします。

[[ -z ${DISPLAY}${WAYLAND_DISPLAY} ]]

したがって、2つの変数の値は、演算子によって処理される共通の文字列に連結され-zます。


参照:

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ