前言
筆者經(jīng)常會(huì)遇到在命令行下不得不走代理的情況:
-
Homebrew&Cask(特別是后者,不走代理的話速度簡(jiǎn)直感人) - 從
Github執(zhí)行各種操作(clone/pull/push/fetch)
舊方案
筆者在本地的 1080 端口搭建了 socks5 代理
開(kāi)啟代理:
export all_proxy=socks5://localhost:1080 && export ALL_PROXY=$all_proxy
有時(shí)候要用到局域網(wǎng)的另外一臺(tái)電腦上搭建的代理,還得將 localhost 改為那臺(tái)電腦的IP。
雖然 zsh 可以通過(guò)鍵入前幾個(gè)字母比如 export all_ 然后通過(guò) 方向上健 快速定位到之間的歷史,然后向左移動(dòng)光標(biāo),刪去 localhost,重新輸入新的 IP,但是筆者還是嫌麻煩,所以動(dòng)了造輪子的心思。
新方案
因?yàn)楣P者采用的是 zsh,所以在 $HOME/.zshrc 內(nèi)添加以下函數(shù)
function socks5on() {
_PORT="1080"
_HOST="127.0.0.1"
if [ $# = 0 ]; then
elif [ $# = 1 ]; then
_PORT=$1
elif [ $# = 2 ]; then
_HOST=$1
_PORT=$2
fi
export all_proxy=socks5://${_HOST}:${_PORT}
export ALL_PROXY=$all_proxy
echo $ALL_PROXY
}
function socks5off() {
unset all_proxy
unset ALL_PROXY
}
函數(shù) socks5on 的用法:
-
$ socks5on設(shè)置代理為socks5://127.0.0.1:1080 -
$ socks5on 1081設(shè)置代理為socks5://127.0.0.1:1081 -
$ socks5on 192.168.0.253 1080設(shè)置代理為socks5://192.168.0.253:1080
函數(shù) socks5off 的用法:
-
$ socks5off取消代理設(shè)置
注意:
socks5on函數(shù)里,筆者變量取名_HOST而不是HOST,是因?yàn)?$HOST默認(rèn)存放系統(tǒng)主機(jī)名稱(chēng)。
all_proxy和ALL_PROXY同時(shí)都設(shè)置,是因?yàn)?,有的程序讀取$all_proxy,有的程序讀取$ALL_PROXY。
讀者可以拿去自行更改食用哈。