グローバル設定ファイルを別の場所に置きたい
【mise】mise use --globalで全体的に使うツールのバージョンを設定する
で紹介したグローバル設定ファイルは、既定で~/.config/mise/config.tomlに置かれる。dotfilesリポジトリの中で設定ファイルを一括管理したい、複数のマシンで共有したいディレクトリに置きたいなど、既定のパス以外を使いたい場合がある。環境変数MISE_GLOBAL_CONFIG_FILEを設定すると、グローバル設定ファイルとして読み書きするパスそのものを変更できる。
MISE_GLOBAL_CONFIG_FILEの基本
MISE_GLOBAL_CONFIG_FILEにパスを指定してから、mise use --globalを実行する。
$ export MISE_GLOBAL_CONFIG_FILE="$HOME/dotfiles/mise/config.toml"
$ mise use --global jq@1.7
mise jq@1.7 [1/2] install
mise jq@1.7 [1/2] download jq-macos-arm64
mise jq@1.7 [2/2] checksum jq-macos-arm64
mise jq@1.7 [2/2] extract jq-macos-arm64
mise jq@1.7 ✓ installed
mise ~/dotfiles/mise/config.toml tools: jq@1.7
~/.config/mise/config.tomlではなく、指定したパスにグローバル設定ファイルが作成される。mise config lsでも、指定したパスがグローバル設定ファイルとして表示される。
$ mise config ls
~/dotfiles/mise/config.toml jq
既にグローバル設定ファイルがある場合でも指定したパスが優先される
設定ファイル名を変更する環境変数として、【mise】MISE_DEFAULT_CONFIG_FILENAMEで作成される設定ファイル名を変更する も紹介した。
MISE_DEFAULT_CONFIG_FILENAMEは設定ファイルの新規作成時にしか効かず、既存の設定ファイルがあればそちらが優先された。一方MISE_GLOBAL_CONFIG_FILEは挙動が異なる。~/.config/mise/config.tomlに既にグローバル設定ファイルがあるかどうかに関わらず、常に指定したパスがグローバル設定ファイルとして扱われる。
$ mise config ls
~/.config/mise/config.toml aws, terraform
$ export MISE_GLOBAL_CONFIG_FILE="$HOME/dotfiles/mise/config.toml"
$ mise config ls
(何も表示されない)
~/.config/mise/config.tomlに既存の設定があっても読み込まれず、~/dotfiles/mise/config.tomlが存在しなければ空として扱われる。既存のグローバル設定を引き継ぎたい場合は、~/.config/mise/config.tomlの中身を指定したパスへ移動しておく必要がある。
プロジェクトローカルのmise.tomlとの優先順位は変わらない
MISE_GLOBAL_CONFIG_FILEでパスを変えても、プロジェクトのmise.tomlとの優先順位は変わらない。【mise】mise use --globalで全体的に使うツールのバージョンを設定する
で説明したとおり、両方の設定がマージされ、ローカルのmise.tomlの指定が優先される。
シェルの設定に登録する
MISE_GLOBAL_CONFIG_FILEはシェルの起動ファイル(.bashrcや.zshrcなど)にエクスポートしておくと、常に指定したパスがグローバル設定ファイルとして使われる。
export MISE_GLOBAL_CONFIG_FILE="$HOME/dotfiles/mise/config.toml"
dotfilesリポジトリでシンボリックリンクを作らずに、リポジトリ内のファイルをそのままグローバル設定として使いたい場合に使える。
