【Linux】Debian の lightdm が .bash_profile(.profile) を読み込まない
特に理由もなくディスプレイマネージャーを「lightdm」に変更したら、「.bash_profile」を読み込んでくれなくなった。
解決方法を探すのに苦労したので、タートルちゃんブログに記事として残しておこうと思います。
まえおき
私が普段使っている Debian のディスプレイマネージャーを「lightdm」に変更しました。
インストールする際にデフォルトで起動するディスプレイマネージャーの選択画面が表示され、問題なくインストールが完了し、起動も問題ないと思っていました。
しばらく使って気づいたんですが、「.bash_profile」に書いている環境変数(PATH)が反映されていなかったのです。私は普段 pyenv を愛用しているのですが見つからないという。。。
ちなみに変更前は「sddm」を使っていました。
その時は「.bash_profile」も正常に読み込まれていました。つまり「lightdm」のせいで読み込まれなくなったわけです。
「.bash_profile」を「.profile」に変更しても読み込まれませんでした。
どうやら Debian の lightdm はログイン時にプロファイルファイルを読み込まなくなるようだ。
余談
Debian の bash は「.bash_profile」が現役ですが、Ubuntu の場合は「.bash_profile」ではなく「.profile」に変更になっていたかと思います。
Ubuntu の方は「.bash_profile」で書くと読み込まれないので「.profile」にしましょう。それで解決するはず。
解決方法
細かいことはどうでもよい。
.bash_profile の場合、以下のコマンドを実行。
$ echo '. $HOME/.bash_profile' >> ~/.xsessionrc
.profile の場合は、以下のコマンドを実行する。
$ echo '. $HOME/.profile' >> ~/.xsessionrc
上記のコマンド実行後、ログアウト&ログイン もしくは 再起動すればプロファイルが読み込まれる。
環境変数(PATH)も反映されているはずです。
何をしているか
ホームディレクトリ直下の「.xsessionrc」に
. $HOME/.bash_profile
の一行を追記(.xsessionrcファイル が存在していない場合は作成)しています。
行頭の .(ドット) はコマンドでいう source です。間違えじゃないので消さないようにね。
「.xsessionrc」って何か
GUI起動をすると必ず実行される(だろう)設定ファイル という認識しかありません。
私は詳しいことは何も知りません。私の知っていることをここに書くよりも、ググった方が詳しいだろうし分かりやすいはずです。
おわりに
.bash_profile を通らないなら、.xsessionrc(必ず通る道)で指示しよう的な、当たり前そうな解決策です。
そもそも .bash_profile が読み込まれるのが当たり前だと思っていたので、記述や設定の間違いを疑っていました。そして多くの時間を無駄にした。
思い込みって怖いですね。
他にもっと良い解決方法あるよってのがあれば、教えてください。
何かの参考になれば幸いです。