You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

激活Mise后Fish Shell中uv自动补全配置失败求助

问题描述

环境:WSL2 Ubuntu 24.04(搭配Windows 11与Windows Terminal),使用Fish Shell,通过Mise管理环境。

操作步骤:

  1. 执行curl https://mise.run | sh安装Mise;
  2. 执行mise use -g uv全局安装uv;
  3. 执行echo 'uv generate-shell-completion fish | source' >> ~/.config/fish/config.fish配置自动补全。

启动终端时出现错误:

Command 'uv' not found, but can be installed with:
sudo snap install astral-uv
~/.config/fish/config.fish (line 6):
uv generate-shell-completion fish | source
^^
from sourcing file ~/.config/fish/config.fish
        called during startup

Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish

当前~/.config/fish/config.fish内容:

if status is-interactive
    # Commands to run in interactive sessions can go here
end

~/.local/bin/mise activate fish | source
uv generate-shell-completion fish | source
问题原因与解决方法

错误原因

启动终端时,执行uv generate-shell-completion fish | source的时机早于Mise完成环境激活的过程,此时uv命令还未被加入当前Shell的PATH中,系统无法找到该命令,因此报错。

解决步骤

你可以通过以下两种可靠方式修复:

方式一:通过Mise直接调用uv生成补全

修改config.fish中的补全命令,用mise exec直接调用uv,无需依赖PATH环境变量:

~/.local/bin/mise activate fish | source
mise exec uv -- generate-shell-completion fish | source

mise exec会通过Mise的环境找到全局安装的uv,确保命令能被正确执行。

方式二:添加条件判断,确保uv存在后再执行补全

如果希望仅在uv可用时加载补全,可以给命令加上条件判断:

~/.local/bin/mise activate fish | source
if command -q uv
    uv generate-shell-completion fish | source
end

command -q uv会检查uv命令是否存在,只有存在时才执行补全生成命令。

额外优化建议

将所有交互式会话需要加载的配置(包括Mise激活和补全)放入if status is-interactive块中,避免非交互式会话执行不必要的命令:

if status is-interactive
    # Commands to run in interactive sessions can go here
    ~/.local/bin/mise activate fish | source
    mise exec uv -- generate-shell-completion fish | source
end

内容的提问来源于stack exchange,提问作者Lucas Mucidas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 22:46:06