デフォルトのDISPLAY変数を取得するには?

デフォルトのDISPLAY変数を取得するには?

新しいシェルセッションが作成されると、この変数はそれに応じて設定されます(、などにすることDISPLAYができます)。誤って変数を台無しにした場合は、通常、その変数をデフォルト値(設定に応じて変更)にリセットしたいと思います。:0:1localhost:0DISPLAY

私の質問は、プログラムで(bashスクリプトを介して)DISPLAY変数を取得する方法です。新しいシェルを作成するのと同じように

他の質問/回答には通常、ハードコーディングexport DISPLAY=0:0や同様の内容が含まれています。これは私が望むものではありません(正しいDISPLAY変数が異なる可能性があるため)。

素直に頑張った

bash -c 'echo $DISPLAY'

サブシェルが現在のシェル変数を継承しているため動作しません

ベストアンサー1

あなたはそれを確認することができます/proc/${pid}/environ。これにはプロセスの初期環境が含まれます。

ここに$$実行中のシェルのpidがあります。また、変数はゼロ文字で区切られます。オプションを使用-eすると、cat印刷できない文字(nil文字など)を印刷し、sednil文字表現を改行に変換します。

$ cat -e "/proc/$$/environ" | sed 's/\^@/\n/g' | grep DISPLAY
DISPLAY=:0.0

$ export DISPLAY=broken

$ cat -e "/proc/$$/environ" | sed 's/\^@/\n/g' | grep DISPLAY
DISPLAY=:0.0

おすすめ記事