テキストファイルを書き出してエディターで開くスクリプトを実行しています。デスクトップセッションでターミナルエミュレータウィンドウを開いてスクリプトを実行する場合、エディタをのようなグラフィカルなものにしたいと思いgedit
ます。ただし、電話などでConnectBotを介してログインしている場合(デスクトップセッションなし)、エディターを使用したいと思いますnano
。
現在、最後のステップを除いて同一の2つの異なるスクリプトを維持する必要があります(または、グラフィカルなスクリプトを実行し、エラーをオフにしてから、でファイルを手動で開きますnano
)。ほぼ同一のスクリプトを2つ持つことは、メンテナンスの観点から非効率的です。
スクリプトは、これらの状況のどれにいるのかを検出し、正しいエディターを開くことができますか?
(スクリプトがターミナルエミュレータウィンドウで実行されているか、ダブルクリックされているかを検出する方法を見つけましたが、ウィンドウがデスクトップで実行されているかどうかを検出する方法はまだ見つかりませんでした...私は思いませんグーグルする正しい用語を知っている)
条件$DISPLAY
内のトリガーとして環境変数を使用できますif
。通常、この変数に値がある場合、グラフィカルアプリケーションを実行できます。
これがbashの例です:
if [[ -z $DISPLAY ]]
then
nano
else
gedit
fi
オペレータは、-z
ENVVARはときtrueを返します$DISPLAY
空で、スクリプトが実行されnano
、それが実行される他のすべての場合には、gedit
。
@ vurp0のこのコメントによると:
最も近代的なウェイランドは(FedoraとUbuntuのでは、デフォルトのデスクトップのような)デスクトップ上で、
$DISPLAY
まだ原因(XWaylandを介して)後方互換性に設定されているが、より堅牢なスクリプトのためには、両方のためのテストには良いだろう$DISPLAY
と$WAYLAND_DISPLAY
確認します。
次の方法でテスト式を変更することをお勧めします。
[[ -z ${DISPLAY}${WAYLAND_DISPLAY} ]]
したがって、2つの変数の値は、演算子によって処理される共通の文字列に連結され-z
ます。
参照:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加