在Debian 11中用asdf安装Erlang/Elixir时遇mix: command not found错误求助
核心问题分析
你已经通过asdf成功安装了兼容版本的Erlang和Elixir,erl -v和elixir -v能正常执行,但mix命令找不到,大概率是asdf的版本生效配置或shims机制未正确工作,而非安装本身的问题。
解决步骤
1. 确保asdf已为Elixir设置生效版本
asdf安装完版本后,必须明确指定全局或局部生效版本,否则不会将对应工具的bin目录加入PATH:
# 设置全局生效的Elixir版本(所有终端会话生效) asdf global elixir 1.13.2-otp-24 # 或在项目目录下设置局部版本(仅当前目录及子目录生效) asdf local elixir 1.13.2-otp-24
执行asdf current查看当前生效版本,确认Elixir版本显示为1.13.2-otp-24,之后新开终端或执行source ~/.bashrc重新加载配置。
2. 检查asdf shims目录是否在PATH中
asdf通过~/.asdf/shims目录管理所有工具的版本切换,该目录必须存在于你的PATH中,且优先级高于系统默认路径:
echo $PATH
如果输出中没有~/.asdf/shims,则手动将其添加到~/.bashrc顶部(确保优先级):
export PATH="$HOME/.asdf/shims:$PATH"
执行source ~/.bashrc生效后再次检查PATH。
3. 验证Elixir的执行路径是否关联到asdf shims
执行以下命令确认asdf是否接管了Elixir的调用:
which elixir
正常输出应为~/.asdf/shims/elixir,如果输出为系统路径(如/usr/bin/elixir),说明~/.bashrc中asdf的配置语句位置靠后,被系统PATH覆盖,需将. "$HOME/.asdf/asdf.sh"移动到PATH相关配置的前面。
4. 重建asdf shims
如果shims文件损坏或未生成,执行以下命令重建Elixir的shims:
asdf reshim elixir 1.13.2-otp-24
完成后新开终端测试mix --version。
5. 移除手动添加的系统Elixir路径
你之前在/etc/profile.d/elixir.sh中添加的路径是系统级Elixir的安装路径,与asdf管理的版本路径冲突,建议删除该文件或注释掉路径配置:
sudo rm /etc/profile.d/elixir.sh # 或编辑文件注释该行:# export PATH=$PATH:/usr/local/lib/elixir/1.13.2-otp-24/bin
之后重新加载系统配置或重启终端。
内容的提问来源于stack exchange,提问作者Emily

