终端环境
出现的问题【一】
为什么 source ~/.profile 之前 Claude 用不了?
因为你跟 Linux01 的 SSH 会话是一个已经打开的终端窗口。
你想想流程:
我把代理配置写进了 ~/.profile 文件(存在硬盘上)
但当前这个 SSH 终端窗口在启动时已经加载了旧的环境变量(那时候 ~/.profile 里还没有代理)
文件改了,但当前终端内存里的变量没变 —— 它不知道文件被改了
所以你在这个窗口里跑 Claude Code,http_proxy 根本没被设置,当然连不上
source ~/.profile 的作用就是告诉当前终端:” 别看内存里的旧值了,重新读一遍 ~/.profile 文件,把新的代理变量加载进来 “。
以后记住一条简单的规律:
新开的终端窗口 / 新 SSH 连接 → 自动读 ~/.profile,代理自动生效
已经开着的终端 → 修改了 ~/.profile 后需要手动 source ~/.profile
出现的问题【二】
frpc 是 systemd 守护进程,它的网络连接是独立的,不受你终端里 export 的环境变量影响。
frpc 在系统启动时就跑起来了,它走的是物理网卡直连 Linux02:7000,跟 xray 代理是两个完全独立的服务
export 的环境变量只影响当前终端里新启动的进程—— 你现在 SSH 进 Linux01,在里面 source ~/.profile,这设置的是你当前这个终端会话的环境变量。但 frpc 进程早就跑着,根本不管你终端里设了啥
xray 只监听 127.0.0.1,它不干预系统网络层,frpc 走的网络路径跟 xray 没有交集
所以即使你在终端里开了全局代理(xray 停掉了),frp 隧道也不受影响 ——frpc 根本不经过 127.0.0.1:10808,它直连 Linux02。
一个更直观的理解:
你从外网 ssh -o Port=2222 xiaoxian@121.89.94.189 这个连接,流量路径是:
你的电脑 → 互联网 → Linux02(公网) → frp隧道 → Linux01:22
常用代码
状态查看
1 | sudo systemctl status xray # 看运行状态 |
启停控制
1 | sudo systemctl start xray # 启动 |
切换配置(香港 ↔ 美国)
1 | ## 切到香港 |
1 | ## 切回美国 |

