おそらくLinuxディストリビューションとは無関係な話題です。
Ubuntu 14.04 LTSで、GUIからログインすると認証には成功している気配なのになぜかデスクトップ環境が表示されず、Xが再起動して再度ログイン画面が出てくる状況になりました。
原因を切り分けてみると
- 問題のアカウントでGUIのログイン画面を無視してCtrl+Alt+F1でCUIからのログインには成功
- 新規ユーザーを作って試すとGUI経由でのログインも成功
という状況でした。
xsession経由で起動されるログインシェルの起動スクリプト中でexecしてはいけないらしい
原因は僕のシェル初期化スクリプトでした。
僕はログインシェルをbashにしつつ、zshが見つかった場合は.profile
中でzshをexecするよう設定していました。ところが、Xからのログイン時に別シェルを起動するとログインシェルに異常があったとみなされるのか、xsession自体が終了してしまって再度ログイン画面に戻っていました。
対策として.profile
先頭に次のように追加してttyが無い環境では別シェルを起動しないようにしたところ、無事GUIからもログインできるようになりました。
# If no tty present, exit immediately
[ -z "$PS1" ] && return
同じ状況になる人は極めて少数だと思いますが、僕は割と悩んだのでメモとして残しておきます。