体验一下zsh

linux人机交互使用的是shell,shell是一个统称,具体的,比如 sh、bash、zsh等,一般来说,linux都默认安装bash作为默认shell,mac默认为zsh,今天来体验一下zsh。

zsh在使用ohmyzsh进行配置后有很多很花的玩法,界面主题也花里胡哨,各种跳转补全啥的也花里胡哨

安装

ubuntu中可以直接使用命令安装:

sudo apt install zsh

安装完成后,就能使用 zsh 命令切换到zsh了,因为是使用bash打开的zsh,所以bash中的环境变量也会被zsh继承。当然,也可以通过以下命令将zsh设置为默认shell,这样的话下次再打开shell就是zsh了(例如如果没有设置默认,重新进入shell后又会回到bash):

sudo chsh -s /bin/zsh

配置

同bash有自己的配置文件 ~/.bashrc一样,zsh也有自己的配置文件 .zshrc,它们本质上都是一个shell启动时的执行脚本,关于shell的配置文件,详见这里(注:zsh并不读取/etc/profile环境配置,而是使用/etc/zsh/zprofile作为环境变量配置)

zsh同bash一样,可以有很多自定义配置,但往往个人配置起来耗时费力,所以有个项目可以帮你减少这些配置 “ohmyzsh”,它实际上就是一个shell脚本,运行这个脚本之后它会替换掉你home目录下的 .zshrc 文件,并且创建一些列文件夹用于保存要安装的插件、主题等。

根据ohmyzsh官网说明安装很简单:

# 官网提供了很多种安装方式,但本质上都是下载一个shell脚本并执行
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

执行完成后它会将你原本的.zshrc文件重命名为.zshrc.pre-oh-my-zsh,并在home目录下创建一个.oh-my-zsh文件夹,里面存放zsh下载的主题、插件等文件,并创建环境变量 $ZSH 指向该文件夹

主题和插件

安装ohmyzsh之后,打开.zshrc文件,若要修改主题,找到变量 ZSH_THEME,改变其值即可,可以修改的主题名详见这里,每个主题都有截图

若要安装插件,则找到plugins变量,它是一个数组,将要安装的插件名写到里面即可(插件之间使用空格、tab、换行区分,不能使用逗号)。可以直接写名称的插件见这里(事实上,这些插件都已经下载好了并存放在~/.oh-my-zsh/plugins/目录下)

有些插件不是官方提供的,可以直接将插件目录复制到~/.oh-my-zsh/plugins/目录下,然后在配置种写上该名称即可。

推荐主题和插件

主题看很多人用的是 agnoster

插件一般安装:

git:在git仓库文件夹下会有很多关于git状态的提示

zsh-autosuggestions:这个插件可以在输入命令时,以灰色字体提示历史命令,免去了按 ctrl+r 操作,需要下载后安装

  1. 下载插件到~/.oh-my-zsh/plugins/目录下:git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
  2. .zshrc 的plugins中加上 zsh-autosuggestions 即可
  3. 执行 source .zshrc 使其生效

注:由于有些终端(xterm或者screen等)默认只有8色,不支持很多其他颜色,故该插件实际显示效果上会有bug,解决办法:在 ~/.zshrc 中加入下面这段代码修改默认终端:

# 原本为 xterm/screen,现修改为xterm-256color将支持更多颜色,可以使用 tput colors 命令查看支持颜色数量
export TERM=xterm-256color

zsh-syntax-highlighting:可以让你输入的命令变得花里胡哨,例如命令和参数使用不同的颜色显示。它也需要下载后安装,过程同上

相关问题

anaconda环境变量

若在安装zsh之前已经通过bash安装过anaconda(或miniconda),则在使用zsh时conda环境并没有正确配置。这是因为安装conda后会在.bashrc种加上一段关于conda的配置,而zsh因为是后面才安装的,所以没有。

解决方法也很简单,因为zsh几乎是兼容bash的,故直接将.bashrc中关于conda的配置复制到.zshrc中即可

tmux还是进入bash

即使设置了zsh为默认shell,打开tmux后仍然进入的是bash,解决办法是:

进入tmux后,按下 ctrl + b 后按 : 进入命令行,输入 set-option -g default-shell /bin/zsh 即可(不是一次性的,也是永久的)

或者创建文件~/.tmux.conf,然后将上面的命令写到该文件中,一劳永逸

Leave a Comment