你的脚本里有正确的 export https_proxy=... 行。你运行它,而下一条命令仍然看到旧的 proxy。脚本或许在它自己的进程里运行得很完美。

执行脚本会启动一个独立的 shell。它可以把自己启动的命令所需的变量传下去,但退出之后无法替换父终端 shell 的环境。

./set-proxy.sh
. ./set-proxy.sh

这是两种不同的操作。第二种用 shell 的 dot 内建命令在当前 shell 中读取文件。Bash 也把它叫做 source;请参阅其内建命令参考。

只对可信的文件做 source,因为它所有的 shell 命令都会在那个当前上下文中执行。如果 proxy 只用于脚本内部的命令,那么普通执行才是正确的边界。对于单条外部命令,命令级的 proxy 赋值可以避免改动当前 shell。

保持变量赋值字面量。反引号表示命令替换,而不是引号。赋值 proxy 的那一行不应意外地尝试执行它的 URL。对于要选择公共端点的值,免费 proxy 列表提供的候选,其协议必须与客户端匹配。最后,确认实际网络客户端读取的变量名;修正 shell 作用域并不能让不受支持的变量生效。

相关文章