Mac中实现终端翻墙(科学上网)

在使用Mac的这么多年来,一直用的ShadwosocksX作为翻墙工具,后来更新到ShadowsocksX-NG,也是一直在使用。因为它是开源项目,具体可以看这里ShadowsocksX-NG in Github.com

不过Shadowsocks-NG有个不太好用的地方,就是无法使终端(Terminal)翻墙。

在日常使用中,经常会需要在终端(Terminal)中运行一些命令,诸如homebrew、pod、git clone等,这些命令执行的下载,大多都是挂在外网,终端不实现翻墙的话,速度简直感人。

对这个问题我自己也是饱受困扰,后来一路搜索,发现很多复制粘贴的老文章,也不知道在说什么,试了也遇到问题或者完全没用。后面在GitHub Issue中找到了一条捷径。

(如果已经安装zsh,请直接跳转到3)


1. 终端设置Shell为zsh

关于zsh的好用之处,这里就不赘述了。这里说一下如何设置zsh为默认shell。

# 查看系统支持的shell,看是否已经安装shell
cat /etc/shells

# 查看当前使用的shell
echo $SHELL

# 使用homebrew安装zsh
brew install zsh

# 设置zsh为默认shell
chsh -s /bin/zsh

2. 安装oh-my-zsh

oh-my-zsh是一个开源的框架,用来管理zsh配置的,基本上和zsh是标配。 oh-my-zsh in Github.com

# 下载+安装oh-my-zsh
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh

curl是一个url传输的命令,可以理解成下载。

安装完之后,zsh的一些具体用法、插件、主题,都可以搜索的到,网上很多教程。

3. 打开.zshrc文件

zsh安装完成后 ,在Mac的根目录会出现一个.zshrc的文件,用sublime或者vim打开可以编辑。如果没有开启文件隐藏显示的话,在终端使用ls等命令可以找到。

# vim打开.zshrc文件
vim ./.zshrc

# 如果不会使用vim
# 将隐藏文件显示出来
defaults write com.apple.finder AppleShowAllFiles -bool true

# 在根目录下使用open命令
open .

打开.zshrc文件之后,我们会发现文件里是这样的,地址、主题之类的,都不用管,我们可能“”里的也不一样,也不用管。

# Path to your oh-my-zsh installation.
export ZSH=/Users/Soda/.oh-my-zsh

# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it'll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="agnoster"

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git)

# User configuration

# export PATH="/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
# export MANPATH="/usr/local/man:$MANPATH"
source $ZSH/oh-my-zsh.sh
source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
#
# Example aliases
# alias zshconfig="mate ~/.zshrc"
# alias ohmyzsh="mate ~/.oh-my-zsh"
eval $(thefuck --alias)

4. 定义proxy和unproxy命令

在刚刚打开的.zshrc文件最下方,eval $(thefuck --alias) 这行上面,添加两句代码

# 开启控制台翻墙
alias proxy='export all_proxy=socks5://127.0.0.1:1086'
alias unproxy='unset all_proxy'

这里要注意,127.0.0.1:1086 这个是你shadowsocksX-NG中的偏好设置-高级-本地Socks5监听地址,一定要设置一样的端口号。

20200310111831.png

然后我来解释一下,alias可以理解成zsh中的一个定义,就是我自己设置proxy命令是用来开启终端翻墙的,定义完了之后保存,这样我在终端中才能使用这个命令,否则我直接在终端中打proxy他根本就不认识这个命令。

5. 大功告成

在你想让终端翻墙的时候,在终端中使用proxy命令,在不想翻墙的时候,用unproxy命令关闭即可。

测试proxy是否成功

curl cip.cc

如果成功的话,会显示你境外的地址

IP	: 45.77.9.127
地址	: 日本  东京都  东京
运营商	: choopa.com

数据二	: 日本 | 东京Choopa数据中心

数据三	: 日本东京都东京

URL	: http://www.cip.cc/45.77.9.127

如果遇到什么问题的话,欢迎在文章底下留言~