コンソールログイン直後にxserverが自動的に起動すると、.bash_logoutまたは.zlogoutは解析されません。

コンソールログイン直後にxserverが自動的に起動すると、.bash_logoutまたは.zlogoutは解析されません。

私は線を引いた:

[[ -z $DISPLAY && $XDG_VTNR -le 4 ]] && exec startx

(Arch Wikiから).xinitrcコンソールにログインしたら、すぐにXserverを起動します。

セッションを終了するたびに、.xinitrcログアウト時に開始されたデーモンは、bash使用に関係なく終了しませんzsh

解析されていないようです.bash_logout/.zlogout。デフォルトで保存されました。

kill -15 -1 &&

他の人にこの問題が発生したか、解決策がありましたか?

答え1

これexec組み込みシェルを指定されたプログラムに置き換えます。その後、シェルをロードできなくなります.*logout

いずれの場合でも、実行中のシェルは.xinitrcログインシェルではないため、どの.*logoutファイルも実行しません。ただし、いずれにせよ、そのシェルは実行したい場所ではstartxありません。xinitstartx

グラフィカルセッションからログアウトした後に何かを実行するには、シェルを実行し続け、その後に実行する項目を指定する必要がありますstartx。そのexec startx行が.profileログインシェルまたはログインシェルで実行されている同様のファイルにあると仮定すると、Xセッションがアクティブな状態でシェルを実行し続ける必要がありますexit(GUIセッションの後に対話型シェルが発生しないように)。

if [[ -z $DISPLAY && $XDG_VTNR -le 4 ]]; then
  if startx; then
    # We just exited an X session.
    exit
    # If your login shell is bash, it runs ~/.logout at this point.
  else
    echo >&2 "The X session aborted with an error, dropping to a text shell"
  fi
fi

関連情報