ちなみに

火曜日の空は僕を押しつぶした。

launchctlに環境変数を渡したい

colimaを使い始めてからmacOSを再起動するたびに設定などがまっさらになるという自体に頭を抱えていた。 これは XDG_CONFIG_HOME 以下じゃなくてホームディレクトリに新規で .colima ディレクトリが作成されてしまうからっぽい。 ホームディレクトリの設定が優先されているだけで、元の設定が消えている訳じゃないので、~/.colima/ を削除して、colimaを再起動するといいのだけれどちょっと手間。

原因は launchctl がシェルと独立して起動されるデーモンなので、環境変数を読めてないことにあると分かったので対策をする。

launchctl setenv でセッション内でだけ環境変数を設定できるらしいのでこれを使っていく。どうも永続的に設定する方法はなさそう。 サービスの plist に書いてくれってことらしいが、今回は HomeBrew で管理されているものというのと、全員が XDG Base Directory を採用している分けじゃないので手元でなんとかする。

僕はログインシェルを zsh にしていて、起動時に環境変数設定用の .zshenv というファイルを読み込むようにしているので、ここに以下のように書いておいた。

launchctl setenv XDG_CONFIG_HOME "$HOME/.config"
launchctl setenv XDG_CACHE_HOME "$HOME/.cache"
launchctl setenv XDG_DATA_HOME "$HOME/.local/share"
launchctl setenv XDG_STATE_HOME "$HOME/.local/state"

これでひとまずやりたいことは出来ていそう。 なんかもっとスマートな方法があれば教えてください。

blog.nishimu.land