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

4,324 阅读5分钟

「这是我参与11月更文挑战的第7天,活动详情查看:2021最后一次更文挑战」。

作者:Mintimate

博客:www.mintimate.cn

Mintimate's Blog,只为与你分享

前言

现在,越来越多的人趋向使用zsh取代原本的bash作为自己的终端Shell。

的确,Zsh才是适用于现代的Shell:

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

什么是zsh

和bash一样,zsh也是终端内的一个命令行解释器,简称:shell。

顾名思义就是机器外面的一层壳,用于人机交互。接收用户或其他程序的命令,把这些命令转化成内核能理解的语言。

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

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

zsh的彩色字体

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

按Tab显示提示

视频教程

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

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

如何安装zsh

默认情况下:

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

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

旧版本macOS启用zsh

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

cat /etc/shells

显示的内容,正常是:

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

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

chsh -s /bin/zsh

此时,按Command+Q退出终端后重启终端,重启就可以使用zsh的终端了。

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

Linux安装zsh

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

cat /etc/shells

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

没有zsh路径

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

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

apt-get install zsh

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

yum install zsh

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

zsh安装成功

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

chsh -s /bin/zsh

设置zsh并重启终端

这样,zsh就已经配置成功了;

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

配置Oh-my-zsh

什么是Oh-my-zsh

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

如何安装Oh-my-zsh

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

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

官方安装

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

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

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

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

官方方法安装

脚本安装

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

zsh -c "$(curl -fsSL 'https://host.mintimate.cn/fileHost/download/MTM1NjkzNzI1OTIxMDg0NjIwOQ==')"

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

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

手动安装

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

  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使配置生效

On-my-zsh的使用

自带填充

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

cd Downloads

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

输入cd后按Tab

输入cd Dow后按Tab自带填充

粘贴自动转义

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

自动转义取消

Tips

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

比如:

Oh-my-zsh换皮肤

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

robbyrussell

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

更改皮肤

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

替换主题后效果:

主题效果

其他主题:github.com/ohmyzsh/ohm…

多用户使用同一zsh配置

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

# 当前为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

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

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