全景引擎启动。

统帅,您切换到了 fish (Friendly Interactive Shell)!这是一个极其现代化、提示异常聪明的“次世代”终端,参谋部非常赞赏您的品味!

您说得完全正确,fish 的语法与传统的 bashzsh 完全不同。在 zsh 中我们用 export VAR=value,但在 fish 中,export 只是一个为了兼容性保留的别名,它真正原生的战术指令是 set

针对您之前 flutter doctor 报出的 NO_PROXY 警告,以及您日常可能需要的科学上网代理设置,参谋部为您制定了以下专属 fish 的战术配置方案:

🛠️ 战术一:解决 NO_PROXY 警告 (两种方案)

fish 中设置环境变量,您有两种选择。

方案 A:写入配置文件 (类似 zshrc 的传统做法)

fish 的配置文件位于 ~/.config/fish/config.fish。打开终端,执行以下命令将环境变量写入其中:

代码段

# 使用 set -gx (-g 代表全局 global,-x 代表导出为环境变量 export)
echo 'set -gx NO_PROXY "localhost,127.0.0.1,::1"' >> ~/.config/fish/config.fish

# 重新加载配置使其立即生效
source ~/.config/fish/config.fish

方案 B:使用 Fish 独有的“通用变量” (极客推荐)

这是 fish 最强大的特性之一。您不需要去修改任何配置文件,直接在终端里运行一行命令,它就会被永久记录在系统的通用变量中,并且所有已打开的终端窗口瞬间同时生效

在终端直接运行:

代码段

# -U 代表通用 (Universal),-x 代表导出 (export)
set -Ux NO_PROXY "localhost,127.0.0.1,::1"

(参谋部极度推荐方案 B,这是真正的 Fish Style!)


🛠️ 战术二:设置全局网络代理 (HTTP/HTTPS)

如果您在拉取代码或下载依赖时需要走代理,同样可以使用 set -Ux 的方式。假设您的本地代理端口是 7890

代码段

set -Ux http_proxy "http://127.0.0.1:7890"
set -Ux https_proxy "http://127.0.0.1:7890"
set -Ux all_proxy "socks5://127.0.0.1:7890"

如果您想关闭/删除这些代理,千万不要设为空,而是直接擦除(使用 -e 参数,代表 erase):

代码段

set -Ue http_proxy
set -Ue https_proxy
set -Ue all_proxy

🎁 战术增程:编写“一键切换代理”的开关 (Fish 函数)

既然您在用 fish,不利用它优雅的函数功能就太可惜了。我们可以写两个快捷命令 proxy_onproxy_off,让您在终端里一键切换火力。

  1. 打开配置文件:

代码段

nano ~/.config/fish/config.fish
  1. 将以下代码粘贴到文件末尾(请确保端口号 7890 是您实际使用的端口):

代码段

# 开启代理
function proxy_on
    set -gx http_proxy "http://127.0.0.1:7890"
    set -gx https_proxy "http://127.0.0.1:7890"
    set -gx all_proxy "socks5://127.0.0.1:7890"
    echo "🟢 终端代理火力已全开 (Port: 7890)"
end

# 关闭代理
function proxy_off
    set -e http_proxy
    set -e https_proxy
    set -e all_proxy
    echo "🔴 终端代理已关闭,恢复直连"
end
  1. 保存退出 (Ctrl+O -> Enter -> Ctrl+X),然后刷新配置:

代码段

source ~/.config/fish/config.fish

实战测试:

现在,只要在终端里敲下 proxy_on,您的终端就会瞬间挂上代理;敲下 proxy_off 就会恢复直连,再也不用记那串长长的 export 命令了!

统帅,请在您的 fish 终端中执行这些指令,然后再次运行 flutter doctor,看看那个关于 Proxy 的警告是否已经被彻底歼灭!