mise能够完全覆盖fgm的功能和使用场景,而且不仅仅能够用来管理Golang工具链,还能够用来管理其他语言的工具链,比如nodejs、neovim、java等等。 甚至我们还能够用mise来替换direnv,实现管理进入退出目录时的环境变量加载和卸载。

下面将从三方面带你感受笔者使用mise的体验:

一. 下载 mise

方式1: 通过包安装管理器安装mise

# 需要先安装cargo-binstall和rust工具链
cargo binstall mise

方式2: 从仓库预编译版本下载资源列表中下载, 解压缩后把mise可执行文件放到可执行文件目录即可 release链接

二. 使用mise管理go版本

0. 初始化mise

在自己的shell配置文件中加入如下命令,其中$SH替换成自己的shell的名称,比如bashzsh等等

# 初始化mise
mise activate $SH

1. 管理局部目录中的go版本

# 切换go工具链到指定版本
mise use go@1.23.1

第一次在某个目录使用mise时,mise会报错,提示需要先信任当前目录采用的mise配置,此时可以通过mise trust命令来信任当前目录的mise配置。 之后,再次使用mise use go@1.23.1命令,mise会自动下载并安装go1.23.1版本,并且将当前目录的go工具链切换到go1.23.1版本。同时,mise会自动在当前目录创建一个mise.toml文件,用来记录当前目录的mise配置信息。

如果当前目录或者父目录中已经存在被信任的mise配置文件mise.toml,那么mise会使用该配置文件工作,使用mise use go@1.23.1之类的命令时,mise会把新配置更新到该配置文件中。

mise使用全局配置文件,一般在$XDG_CONFIG_HOME/mise/config.toml中,可以通过mise config命令查看和修改全局配置文件。 使用mise时,可以通过-g选项来指定是否使用全局配置文件,此外,如果在本目录以及父目录中找不到mise配置文件,mise也会自动使用全局配置文件。

三. 使用mise管理进出目录时的环境变量加载和卸载

# 使用mise设置环境变量RUSTUP_BACKTRACE=1
mise env set RUSTUP_BACKTRACE=1

该命令执行成功后,每次进入该目录时,mise会自动加载RUSTUP_BACKTRACE=1环境变量,退出该目录时,mise会自动卸载RUSTUP_BACKTRACE=1环境变量,使用该环境变量原本的值(如果原本该环境变量已经存在)或者删除该环境变量。

需要注意的是,使用该命令时,mise会先进行配置文件检查,如果是初次使用的区域,同样需要先执行mise trust命令。