1. 创建一个 shell 脚本

shell
#!/bin/bash

# 获取并设置HTTP代理
http_proxy_enabled=$(networksetup -getwebproxy Wi-Fi | awk '/Enabled: Yes/')
if [ ! -z "$http_proxy_enabled" ]; then
    http_proxy_server=$(networksetup -getwebproxy Wi-Fi | awk '/Server:/ {print $2}')
    http_proxy_port=$(networksetup -getwebproxy Wi-Fi | awk '/Port:/ {print $2}')
    export http_proxy="http://$http_proxy_server:$http_proxy_port"
    export https_proxy=$http_proxy
    echo "HTTP Proxy set to $http_proxy"
fi

# 获取并设置SOCKS代理
socks_proxy_enabled=$(networksetup -getsocksfirewallproxy Wi-Fi | awk '/Enabled: Yes/')
if [ ! -z "$socks_proxy_enabled" ]; then
    socks_proxy_server=$(networksetup -getsocksfirewallproxy Wi-Fi | awk '/Server:/ {print $2}')
    socks_proxy_port=$(networksetup -getsocksfirewallproxy Wi-Fi | awk '/Port:/ {print $2}')
    export all_proxy="socks5://$socks_proxy_server:$socks_proxy_port"
    echo "SOCKS Proxy set to $all_proxy"
fi

这个脚本适用于连接到 Wi-Fi。如果你通常使用有线连接或其他网络服务,你可能需要将 Wi-Fi 替换为相应的服务名称,如 Ethernet。你可以通过运行 networksetup -listallnetworkservices 来查看所有可用的网络服务。

2. 使脚本可执行

保存脚本后,需要使其可执行。打开 iTerm,导航到脚本所在的目录,然后运行以下命令:

plain
chmod +x set_proxy.sh

3. 在 shell 配置文件中调用脚本

为了让每个 iTerm 会话都自动应用系统代理设置,你需要在你的 shell 配置文件(例如 .bash_profile, .bashrc, .zshrc 等)中调用这个脚本。打开你的 shell 配置文件:

plain
open -e ~/.zshrc  # 如果你使用的是 zsh
# 或者
open -e ~/.bash_profile  # 如果你使用的是 bash

然后,在文件末尾添加以下内容来执行脚本:

plain
source /path/to/set_proxy.sh

请确保将 /path/to/set_proxy.sh 替换为脚本的实际路径。

4. 应用更改

保存并关闭配置文件后,在 iTerm 中重新加载它:

shell
source ~/.zshrc
# 或者
source ~/.bash_profile

现在,每当你启动一个新的 iTerm 会话时,它都会自动检测并应用系统代理设置。