web-dev-qa-db-ja.com

環境変数XDG_VTNRとは何ですか?

私が見つけたほとんどすべてのページは、説明のないログインでXorgを自動的に起動しようとしています。たとえば、~/.bash_profileを例にとります。

if [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then
  exec xinit
fi

$XDG_VTNRは現在のTTY番号を取得するための変数である可能性があると思いますが、同じ目的を満たすことができるttyというコマンドがすでに存在しています。

私の質問:

  1. $XDG_VTNRとは何ですか?いつどこで設定されますか?
  2. この変数に関する公式ドキュメントはどこにありますか?
  3. ttyは組み込みコマンドですが、$XDG_VTNRはXorgから提供されています。組み込みttyではなく$XDG_VTNRを使用する理由は何ですか?
6
Jian Weihang

_$XDG_VTNR_とは何ですか?いつどこで設定されますか?

これは_pam_systemd_ PAMモジュールによって設定され、systemdを使用しているマシンでのみ設定されます。つまり、依存しないでくださいスクリプトで、systemdに依存させたくない場合を除きます。

Systemdを使用しているシステムでは、_$XDG_VTNR_はグラフィカル(lightdmgdmなど)とテキストモードセッション(_/bin/login_)の両方で設定されます。 。

この変数に関する公式ドキュメントはどこにありますか?

pam_systemd(8) マンページ。

ttyは組み込みコマンドですが、_$XDG_VTNR_はXorgによって提供されていますが、組み込みttyではなく_$XDG_VTNR_を使用する理由は何ですか?

1)ttyはスタンドアロンプ​​ログラムであり、組み込みではありません。_$XDG_VTNR_はXorgから提供されていません。

2)まったく違うものだからです。マンページに明記されているように、tty(1)は、GUIセッションなどが実行されている可能性のある仮想端末の名前ではなく、標準入力に接続されている端末の名前を通知します[1]。このことを考慮:

_$ script -q /dev/null
$ tty
/dev/pts/5
$ script -q /dev/null
$ tty
/dev/pts/6
$ tty </dev/zero
not a tty
_

[1] _XDG_VTNR_も信頼できる指標ではありません。

8
mosvy