分享给命令行新手玩家的终端代理小技巧 ❤️

我很喜欢命令行终端,使用喜欢的shell 进行日常的开发和工作非常有趣且高效.对于终端使用,始终绕不过一个问题:网络代理.

为了更快地下载一些国外资源,我们需要为自己的terminal配置网络代理.接下来就让我给大家分享几个我使用过的shell的代理设置知识.

TOS

Bash / ZshPowershell / CMDFIshGit or NPM

1. Bash / Zsh

得益于多数Linux发行版自带Bash的原因,使用 Bash 的用户数量庞大.而Zsh自走入开发者们的视线以来,用户量急速增长,并且口碑良好.

bash的默认配置文件是~/.bashrc,zsh的默认配置文件是~/.zshrc,二者设置代理的方法是一致的,只需要在各自的配置文件增加两个函数即可.

注意替换 ip 和 port 为自己代理工具设置的值

编辑配置文件增加代理设置和取消的函数:

# 开启代理 proxy () { export http_proxy=":port" export https_proxy=":port" echo "Network Proxy on" } ​ # 关闭代理 noproxy () { unset http_proxy unset https_proxy echo "Network Proxy off" }

添加函数之后,可以source ~/.zshrc or source ~/.bashrc重置配置后进行调用.

2. Powershell

Powershell无愧Power之名,强烈推荐windows环境开发者使用.其配置文件默认打开方式:

notepad $profile

使用你喜欢的编辑器打开$profile环境变量保存的文件,如果不存在可以先创建.最后也是增加代理函数:

function proxy() { $Env:https_proxy=":port" $Env:http_proxy=":port" } function noproxy() { $Env:https_proxy="" $Env:http_proxy="" }

3. CMD

CMD依然在某些场合发挥着自己的作用,只是我并不喜欢CMD,你可以直接在命令行使用如下命令设置代理:

# set set http_proxy=ip:port set https_proxy=ip:port # clear set http_proxy= set https_proxy=

4. Fish

当我发现Fish shell的时候, 我为autojump感到惊叹,fish shell 速度快,对于语法高亮的支持很好,虽然zsh也可以通过插件实现这些功能,一开始接触的时候虽然有一点不适,但我很快渐入佳境,现在我主要使用fish,但是在一些情况下依然会切换到zsh执行一些命令.

话说回来,Fish的配置文件是~/.config/fish/config.fish:

function proxy set -xg ALL_PROXY :1087 end ​ function noproxy set -e ALL_PROXY end

但是也可以直接此插件来配置代理:

oh-my-fish/plugin-proxy: Proxy settings plugin for Oh My Fish

5. 验证效果

# 开启 proxy ​ # 关闭 noproxy ​ # 使用某地址测试代理 curl -v 某地址 # 未设置代理的结果: * Trying 162.125.32.15... ... # 设置代理: * Uses proxy env variable http_proxy == :1087 * Trying 127.0.0.1... ...

6. 其他

6.1 Git

终端配置代理后使用Git,那么网络将走代理服务器,但是有些时候也可以不设置终端代理,直接为Git配置代理:

# 设置 git config --global https.proxy :1080 git config --global https.proxy :1080 ​ # 取消 git config --global --unset http.proxy git config --global --unset https.proxy

6.2 NPM

无论是npm还是pnpm,都可以使用yrm直接选择源,可以直接通过npm安装yrm:

# install npm i -g yrm ​ # use yrm ls yrm use taobao # 日常使用 yrm use npm # 登录npm, 发布公共包yrm 将直接重置 npm 的配置文件,如果你有独立的配置,建议不要使用 yrm,而是直接使用 npm cli 的配置功能.

欢迎探讨.