前情

公司有代理,回家开自己的代理

所以在终端配置了一个可以快速开启/切换不同网络环境(公司/home)代理的命令(可以点这里参考):

proxyon 1/2 # 开启代理
proxyoff # 关闭代理

我一开始在zshbash默认配置开启代理,但是每次在家开终端就要手动proxyon 2开家里的代理,所以我最后设置成默认终端不开启代理。

今天上班发现一个新问题:

首先pycharm可以配置系统代理(我配置了自动发现代理,测试可以正常访问谷歌)

但是在运行配置中不会使用设置中配置的代理而是去读环境变量。

由于我之前终端默认开启代理所以之前一直可以读到环境变量,访问google ai没问题,今天调整成默认关闭代理后读不到环境变量,所以一直访问不通。

要给每个运行配置代理太麻烦了,所以现在解决方案是:用快捷方式去快速修改zshbash的配置文件然后生效,这样在家和公司点快捷方式去默认开启终端的代理。

方案

/usr/local/bin中新建文件switch-proxy填入:

#!/bin/bash

# 检查参数
if [[ "$1" != "1" && "$1" != "2" && "$1" != "0" ]]; then
  echo "Usage: switch-proxy [0|1|2]"
  echo "  0: disable proxy"
  echo "  1: company proxy"
  echo "  2: home proxy"
  exit 1
fi

# 定义要修改的文件列表
FILES=("$HOME/.zshrc" "$HOME/.bash_profile")

for FILE in "${FILES[@]}"; do
  if [[ -f "$FILE" ]]; then
    # 删除旧的 proxyon 和 proxyoff 行
    sed -i.bak '/^# __PROXY_AUTO__$/ {N; d;}' "$FILE"
    # 根据参数添加新的配置
    if [[ "$1" == "0" ]]; then
      echo "# __PROXY_AUTO__" >> "$FILE"
      echo "proxyoff" >> "$FILE"
    else
      echo "# __PROXY_AUTO__" >> "$FILE"
      echo "proxyon $1" >> "$FILE"
    fi
  fi
done

# 自动 source,使当前 shell 立即生效
source ~/.zshrc 2>/dev/null
source ~/.bash_profile 2>/dev/null

echo "Proxy switched to: $1"

然后在快捷指令中配置就可以快速切换代理了

pycharm也要重新启动一下