[Shell] 按需手动设置终端某个命令的代理
很多人在使用代理软件的时候,喜欢开全局模式,但是我却不喜欢这样,我喜欢在需要的时候手动开启,原因就不解释了。
以往在需要手动开启的时候,我会在命令执行前导出一下设置:
# 先导出设置
$ export http_proxy=http://localhost:1080
$ export https_proxy=http://localhost:1080
# 再执行命令
$ go get
# 不需要的时候关闭
$ export http_proxy=
$ export https_proxy=
这样做有点麻烦。
后来我想到了一个办法:我写了一个脚本,把要执行的命令作为参数放在脚本里面执行。在这个脚本执行命令之前,先设置代理,然后正式执行命令。 由于脚本是在子进程中执行的,所以在脚本里面做的任何设置都不会影响到当前进程。脚本结束后,设置自动消失。所以这是一个非常巧妙的办法。
这个脚本非常简单,内容如下:
#!/bin/bash
# 这里是你的服务器
proxy='http://raspberrypi:1080'
# 这个设置会影响当前进程执行的其它所有进程
export http_proxy="$proxy"
export https_proxy="$proxy"
"$@"
脚本下载:proxy.sh,记得去掉后缀(非必须)。
我把它放在了/usr/local/bin/proxy
,记得加上可执行权限(/usr/local/bin
在我的PATH里面)。
使用方法:
# 若不使用
$ curl https://www.example.com
# 若使用
$ proxy curl https://www.example.com
非常地简单明了。
灵感来源:tsocks。