2020-10-20 (Tu) [長年日記]
_ 環境変数等の置き場所
環境変数ってどこに設定するのがいいんかね。
- メインは gdm でログイン
- 生 console にログインすることもある
~/.zshenv に書くと、gdm → compositor → その他のプロセス に渡らない。
X だと ~/.xprofile でなんとかする手があるんだけど、メインは X じゃないのでこれは使えない。
主に wayfire を使ってるけど、GNOME, i3, sway なんかも使うので、 wayfire 専用の方法があるとしてもそれではダメ。
systemd の手を借りるしかないなーと思いつつ、↓この辺を読む。
と、
- environment.d は unit file にのみ影響するらしい。session に反映されないのでダメ。
- /etc/systemd/user.conf はシステム用。ダメ
- /etc/systemd/system/user@.service.d/ も同じ。ダメ。
- set-environment/import-environment も unit file のみ。ダメ。
- dbus。import-environment と同じ効果らしい。ダメ。
ろくな方法がないなぁ...
で、そのもう少し下を見ると、pam_environment っていう項目がある。
これなら、session 開始時には必ず読まれそう。 ただ unit file に反映されるんかな…
[Unit]
Description=Print Environment
[Service]
Type=oneshot
ExecStart=/usr/bin/printenv
反映されてるな。
ただ、環境変数はそれでいいとして、設定したいのがそれだけじゃない、ってのがな… ulimit とか umask とか設定したいじゃん?
一度 shell を起動してくれれば万事うまくいくと思うんだけどなぁ... なんでやってくんないんだろ…
_ そしてハマる
~/.pam_environment に一通り設定して、.zshenv からは削除して、 ~/.config/environment.d/ にもないことを確認して、ログインしなおす。
良さげ。
と思ったのもつかのま、微妙に日本語が表示できてない箇所がある。 特に端末。Emacs は大丈夫。
なんだろう。
環境変数を調べたら、LANG だけ設定できてない。C になってる。 端末でも Emacs でも。Emacs はまぁあまり環境変数の影響を受けないだろうな。 全部自前でやってそう。端末で表示できてないのは LANG が影響してそう。
で、grep しまくったが、全然わからん。 /etc/environment にはないし、/etc/security/pam_env.conf にもないし、 /etc/profile.d/locale.sh は LANG が設定されてない時だけ設定してる。
wayfire がやるかと思ったけど、んなわきゃないし、 waybar もやるわきゃないし。
んーわからん。