终端从bash到zsh与终端代理
徐徐 抱歉选手

一个冷知识,zsh该怎么读,我一直读z-s-h三个字母,后来发现应该读z-shell。

从bash到zsh

参考macos上的zsh配置

shell脚本切换

1
2
chsh -s /bin/zsh
chsh -s /bin/bash

查看当前系统默认shell

1
echo $SHELL

默认zsh安装/升级

1
2
3
zsh --version

brew install zsh zsh-completions

保留bash脚本

命令行输入

1
echo "source ~/.bash_profile" >> ~/.zshrc

但是会出现\和[和]和英文字母数字掺杂的情况,待解决。

类unix文件命名规则:

  • 在类unix系统中常用缩略语rc是runcom/run command的简写。rc一般会跟在任何类脚本文件名的最后,这些脚本通常在程序的启动阶段被调用。例如,.bashrc是在bash shell启动后运行的脚本,/etc/rc是linux启动的主角本。
  • ~波浪号代表当前用户的home目录,在OS X下位于/Users/用户名/
  • .点是类unix下的隐藏文件,在GUI文件管理器和ls的默认设置下不会显示出来,但ls -a命令可以显示英藏文件

安装oh my zsh

官方推荐的curl方式以及wget方式在终端输入的时候会一直显示443拒绝连接!一开始以为是hosts的问题,需要像以前那样修改主机地址sudo vim /etc/hosts并添加github相关ip,但是发现依然没用!

后来发现需要设置终端代理,分两种情况,针对当前终端窗口的代理设置;针对当前shell配置文件的永久设置。

终端代理

以使用Clash X代理客户端为例,对Clash X客户端进行“复制终端代理命令”的操作。

image-20201219101143203

然后Copy到终端为

1
export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890

之后执行oh my zsh的命令就没有443问题了。这种方法只在当前终端有效,关闭或者新建终端窗口将失效。


如果希望长期有效,将命令添加在shell配置文件.bash_profile或者.zshrc中。

  1. 终端进入配置文件
1
sudo vi ~/.zshrc # 进入配置文件,输入密码
  1. 添加shell配置文件

如果没有vim使用经验需要查看一下vim操作,按下i从默认的正常模式变为编辑模式。

在文件末尾添加以下命令,注意host:127.0.0.1和port:7890需要匹配Clash X客户端复制终端代理命令的相关数据。

1
2
alias setproxy="export https_proxy=http://127.0.0.1:7890;export http_proxy=http://127.0.0.1:7890;export all_proxy=socks5://127.0.0.1:7890;echo \"Set proxy successfully\" "
alias unsetproxy="unset http_proxy;unset https_proxy;unset all_proxy;echo \"Unset proxy successfully\" "

继续vim操作,esc变为正常模式,按下冒号:并输入wq会保存并退出,由此回到终端。

  1. 应用shell配置文件

在终端执行以下命令让配置生效。

1
2
source ~/.bash_profile
source ~/.zshrc
  1. 应用代理命令

直接在终端输入setproxy即可。


参考

  1. macOS终端使用代理网络

  2. 关于终端代理

无法PING

在设置完代理之后,使用ping方法依然无法成功。因为ping方法是基于网络层的ICMP协议,而代理协议socks和http分别基于OSI模型的会话层和应用层。详细解释看这里如何在命令行里设代理。可以使用curl方法访问外网网站。

curl ip依然显示实际地理位置

在设置完代理之后,使用curl方法获得地理位置信息curl cip.cc,可能依然显示实际地理位置,注意查看参考1中给出的前提条件是Clash X代理客户端开启全局模式,如果是规则判断依然会出现实际地理位置。

npm/yarn设置代理

为npm和yarn设置包管理工具的初衷是出现network error。一般情况下,会建议切换国内源,但是国内源切换了也还是没办法的话就试试设置代理。

参考如何为git,npm,yarn设置代理

查看代理命令

1
2
npm config list
yarn config list

设置代理命令

1
2
3
4
5
npm config set proxy  http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890

yarn config set https-proxy http://127.0.0.1:7890
yarn config set proxy http://127.0.0.1:7890

如果走了代理,就可以把源设置为国外默认源了。

  1. 查看国外源
1
2
npm config get registry
yarn config get registry
  1. 设置国外源
1
2
npm config set registry=http://registry.npmjs.org
yarn config set registry https://registry.yarnpkg.com

取消代理命令

1
2
3
4
5
npm config delete proxy
npm config delete https-proxy

yarn config delete proxy
yarn config delete https-proxy
  • 本文标题:终端从bash到zsh与终端代理
  • 本文作者:徐徐
  • 创建时间:2020-12-19 08:58:17
  • 本文链接:https://machacroissant.github.io/2020/12/19/bash-to-zsh/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论