トップ «前の日記 最新 次の日記»

2020-10-20 (Tu) [長年日記]

_ 環境変数等の置き場所

環境変数ってどこに設定するのがいいんかね。

  • メインは gdm でログイン
  • 生 console にログインすることもある

~/.zshenv に書くと、gdm → compositor → その他のプロセス に渡らない。

X だと ~/.xprofile でなんとかする手があるんだけど、メインは X じゃないのでこれは使えない。

主に wayfire を使ってるけど、GNOME, i3, sway なんかも使うので、 wayfire 専用の方法があるとしてもそれではダメ。

systemd の手を借りるしかないなーと思いつつ、↓この辺を読む。

https://wiki.archlinux.jp/index.php/Systemd/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC#.E7.92.B0.E5.A2.83.E5.A4.89.E6.95.B0

と、

  • 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 もやるわきゃないし。

んーわからん。


編集 パスワード変更