全景引擎启动。
统帅,您切换到了 fish (Friendly Interactive Shell)!这是一个极其现代化、提示异常聪明的“次世代”终端,参谋部非常赞赏您的品味!
您说得完全正确,fish 的语法与传统的 bash 或 zsh 完全不同。在 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_on 和 proxy_off,让您在终端里一键切换火力。
- 打开配置文件:
代码段
nano ~/.config/fish/config.fish
- 将以下代码粘贴到文件末尾(请确保端口号
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
- 保存退出 (
Ctrl+O->Enter->Ctrl+X),然后刷新配置:
代码段
source ~/.config/fish/config.fish
实战测试:
现在,只要在终端里敲下 proxy_on,您的终端就会瞬间挂上代理;敲下 proxy_off 就会恢复直连,再也不用记那串长长的 export 命令了!
统帅,请在您的 fish 终端中执行这些指令,然后再次运行 flutter doctor,看看那个关于 Proxy 的警告是否已经被彻底歼灭!