Linux/Mac如何配置zsh并使用Oh-my-zsh?让你的终端更加好用

本文最后更新于:2022年8月16日 下午

前言

现在,越来越多的人趋向使用zsh取代原本的bash作为自己的终端Shell。的确,Zsh才是适用于现代的Shell:

  • 更丰富的命令提示
  • 更鲜明的演示标记
  • 更强大的插件支持

本文章同步发布在:

什么是zsh

和bash一样,zsh也是终端内的一个命令行解释器,简称:shell。顾名思义就是机器外面的一层壳,用于人机交互。接收用户或其他程序的命令,把这些命令转化成内核能理解的语言。

具体表现为其作用是用户输入一条命令,shell 就立即解释执行一条。不局限于系统、语言等概念、操作方式和表现方式等。比如:我们使用的cdwgetcurlmount等命令。

传统的shell(如:bash),命令和显示的文字以单色为主;而zsh不仅支持彩色字体,还支持命令填充:

zsh的彩色字体

原本需要输入路径全面,现在zsh可以通过按Tab键来自动填充:

按Tab显示提示

远程辅助

提供远程辅助(QQ:198330181),可以远程辅助的人群:

  • 打赏捐赠用户,即:捐赠一杯咖啡以上的用户。

上诉条件满足其一即可。远程辅助保证能运行服务器,如果需要其他Linux指导或其他问题(如:搭建网站等),额外商务需求,定制价格另算。

远程辅助,仅仅为额外功能;主要是太多人,图文教程都不看、B站视频也不看就直接 来问我们,我们又没那么多时间,一遍一遍重复博客和视频内容,所以出“远程辅助”服务。

一切博客教程,均可自己按图索骥,不用担心没有远程辅助就不能实现。^_^

视频教程

最近没什么好做的视频,就做了该期教程的对应视频教程:

觉得教程有用的话,记得视频投币、点赞嗷~B站视频地址

判断当前Shell

如何判断当前Shell是不是Zsh呢?其实很简单,终端内输入:

1
echo $SHELL

查看当前Shell

图中可以看到,我的Shell是/bin/zsh,也就是Zsh;如果你的事/bin/bash,说明你的是bash,可以看接下来的步骤安装zsh并激活。

如何安装zsh

默认情况下:

  • macOS Catalina(mac10.15系统)系统开始,默认使用zsh。即使是macOS High Sierra(mac10.13系统)系统也自带zsh
  • Linux一般默认使用bash,需要手动安装(ArchLinux默认zsh)

所以,本目录下主要Linux如何安装zsh,macOS Catalina以后的Mac用户可以直接跳到Oh-my-zsh的配置。

旧版本macOS

旧版本的macOS也是有自带zsh,你可以在终端内输入:

1
cat /etc/shells

显示的内容,正常是:

1
2
3
4
5
6
7
/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

可以看到,其中的/bin/zsh就是zsh了。我们只需要设置zsh为终端默认shell即可,终端输入:

1
chsh -s /bin/zsh

此时,按Command+Q退出终端后重启终端,就可以使用zsh的终端了。zsh设置过于复制,但是我们可以使用Oh-my-zsh来快速配置,可以看后文Oh-my-zsh的配置方法。

Linux安装zsh

一般情况下,Linux是不自带zsh的,你可以使用命令查看,终端输入:

1
cat /etc/shells

正常情况下,应该是没有/bin/zsh的:

没有zsh路径

解决方法很简单,使用apt或者yum安装即可:

如果你的Linux是基于Debian/Ubuntu,使用apt作为Linux软件包管理器,终端输入:

1
sudo apt install zsh

如果你的Linux是基于Centos/Redhat,使用yum作为Linux软件包管理器,终端输入:

1
sudo yum install zsh

安装后,重新使用cat /etc/shells命令查看:

zsh安装成功

之后,设置为默认shell并重启终端:

1
chsh -s /bin/zsh

设置zsh并重启终端

这样,zsh就已经配置成功了;重新启动Shell,就是zsh了。

但是zsh设置过于复杂,但是我们可以使用Oh-my-zsh来快速配置,可以看后文Oh-my-zsh的配置方法。

Oh-my-zsh

Oh-my-zsh简称:omz

什么是Omz

zsh的功能极其强大,只是配置过于复杂,起初只有极客才在用。后来,一些极客为了让更多人受益,开发了Oh-my-zsh这个插件,用来简化zsh的配置,让zsh更加容易上手。

安装Omz

Oh-my-zsh十分简单,可以看看项目地址:https://github.com/ohmyzsh/ohmyzsh

官方配置非常简单,但是因为项目官方脚本在GitHub的原因,国内访问可能有点困难,为此给大家提供四个方法配置。

以下方法,四选一哦。个人推荐脚本配置安装或者脚本增强安装:

  • 脚本配置安装:使用Shell脚本,直接配置Oh-my-zsh,并配置国内更新源(后续使用和官方一样,且可以更新)。
  • 脚本增强安装:使用Shell脚本,加上定制化配置文件配置Oh-my-zsh,同时激活部分使用插件(如:代码高亮、历史代码提示填充等),并配置国内更新源。(提供给加入爱发电电圈用户

官方配置安装

Linux/Mac打开终端,输入官方提供的脚本:

1
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

为了保证脚本能顺利运行,你的Linux/Mac服务器需要:

  • 提前安装gitcurl
  • 可以成功连接GitHub
  • 如果有~/.zshrc文件,最好提前备份

官方方法安装

手动配置安装

其实,手动配置重复的内容就是我写的脚本配置:

  1. 在oh-my-zsh的github主页,手动将zip包下载下来。
  2. 将zip包解压,拷贝至~/.oh-my-zsh目录。
  3. 执行cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc或手动复制~/.oh-my-zsh/templates/zshrc.zsh-template内文件内容到~/.zshrc内。(如果没有~/.zshrc文件,可以手动创建)
  4. 重启终端或终端输入source ~/.zshrc使配置生效

【推荐】脚本配置安装

考虑到官方方法,需要连接GitHub;如果你的设备无法有效访问GitHub。可以使用我配置的脚本:

1
zsh -c "$(curl -fsSL 'https://api.host.mintimate.cn/fileHost/public/download/1P0R')"

为了保证脚本能顺利运行,你的Linux/Mac服务器需要:

  • 提前安装curlunzip
  • 如果有~/.zshrc文件,最好提前备份,否则本脚本自动更改原本的.zshrc文件为zshrcBak

【推荐】脚本增强安装

Oh-my-zsh国内一键配置脚本,并自动添加和激活zsh-syntax-highlighting和zsh-autosuggestions等插件。相当于脚本配置安装的增强版。

目前,该脚本仅提供给爱发电有发电的用户,参考:https://afdian.net/p/7ad890cabedb11ecb5d152540025c377

使用效果

使用效果

使用效果

Omz

自动填充

这边主要使用到zshTab功能,举个例子,当我们需要使用cd命令,前往Downloads文件夹,传统Bash书写方法:

1
cd Downloads

而使用zsh,我们可以只输入cd或者部分内容,按Tab看提示:

输入cd后按Tab

输入cd Dow后按Tab自带填充

粘贴自动转义

使用Oh-my-zsh,默认是使用自动粘贴转义。但是这样容易出差错。为此,如果需要关闭自动转义,可以打开~/.zshrc文件,添加DISABLE_MAGIC_FUNCTIONS=true字段:

自动转义取消

Tips

zsh的强大不仅仅如此,还可以安装更多强大插件,感兴趣可以自己进行探索。而Oh-my-zsh的使用也不仅仅如此,可以自行阅读开发者文档:https://github.com/ohmyzsh/ohmyzsh

比如:

Oh-my-zsh换皮肤

Oh-my-zsh默认使用的是robbyrussell

robbyrussell

但是,我习惯使用steeef皮肤,在~/.zshrc文件内进行更改:

更改皮肤

我是使用Mac的文档编辑器打开该文件,其实可以用终端vim命令打开,更加方便

替换主题后效果:

主题效果

其他主题:https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

多用户使用同一zsh配置

bash不同用户都是读取/etc/bash文件作为环境配置文件,而zsh,默认是使用$HOME下的配置文件。那么,如果Linux上有多个用户怎么办?每次都要配置一遍?
原则上要,但是我们可以使用软连接,镜像某个用户的zsh配置到其他用户配置,这边演示镜像pi用户的zsh配置到root用户
首先,创建软连接:

1
2
3
# 当前为pi用户
sudo ln -s $HOME/.oh-my-zsh /root/.oh-my-zsh
sudo ln -s $HOME/.zshrc /root/.zshrc

之后,更改pi用户就会自动映射给root用户,使两边zsh的配置一样。而所限于oh-my-zsh的配置,你需要开启ZSH_DISABLE_COMPFIX

1
2
# 当前为pi用户
vim ~/.zshrc

加上ZSH_DISABLE_COMPFIX=true这条数据:
添加数据配置


若对文章很感兴趣,可以B站关注我ヾ(≧▽≦*)o

点此跳转“爱发电”页面(○` 3′○)