跳过正文
  1. 技术博客/

Zsh开箱即用

·2408 字·5 分钟·
Somnus
作者
Somnus
记录学习、项目、实验和一些被密码保护起来的日常。

why zsh: 本人长期使用bash,其实早有耳闻zsh的方便快捷,之前黄学长给我的使用的服务器里面就配置了zsh,当时感觉自动补齐功能很惊艳,但是受限于我原本在机器人队打工,很多网上开源雷达点云算法(pointlio,fastlio)都需要通过source setup.bash来配置环境,如果用zsh可能会有些问题,但最近很高兴去尝试一些新的东西,于是就有了这篇博客

zsh的特点
#

  • zsh,即z-shell,是在bourne-shell的基础上,作出许多改进的一种命令解释器,其实就是shell就是linux或者类linux架构中,起到和kernel内核传达指令的“”(shell)。 zsh是保罗(Paul Falstad)在普林斯顿大学求学期间编写的,当时只是初版,而zsh的名字是来源于他的一个老师邵中(zhong shao),保罗把他老师的名字zsh作为了shell的名称。 此后,zsh一直作为bash替代,不稳不火。2019年,由于macos上的bash版本太旧了,但是新版的bash采用GPLv3授权,这让苹果无法接受,自此苹果改成了zsh作为默认shell(依旧果子重拳出击)。 zsh有着更好的扩展性,同时可以定制更多的主题,让平平无奇的终端变得赏心悦目。
  • oh-my-zsh:一个免费好用,非常好用的开源zsh框架,由开源社区推动,现在已经有了很多非常好用的插件。比如git,zsh-autosuggestions,建议每一个人都无脑使用oh-my-zsh。
  • alacritty:一个使用rust编写基于opengl的终端模拟器,快、轻便、跨平台是他的特点,他相对于ghostty的缺点就是不能支持原生分屏,但这一点可以通过tmux弥补。其他全是优点。

安装zsh和oh-my-zsh
#

下载
#

在ubuntu安装zsh可以直接用apt来安装

1sudo apt update
2sudo apt install -y zsh git curl #顺便检查一下git和curl的安装

在archlinux系列可以通过pacman安装

1sudo pacman -S zsh

安装完可以检查一下

1which zsh
2zsh --verstion

配置
#

如果有需要,可以把zsh设置为默认的shell 通过执行这个命令可以完成设置

1chsh -s "$(which zsh)"

会要求你输入密码,然后退出重新打开终端,通过下面这个指令来确认是否切换成功。

1echo $SHELL

如果改完之后还是显示是原始的shell,bash或者fish,建议重启一下。

安装oh-my-zsh
#

直接用官方仓库(omz竟然有185.6k stars)给的脚本来安装。

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

然后可以使用下面的指令来安装两个最常用的插件

1git clone https://github.com/zsh-users/zsh-autosuggestions \
2  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
3
4git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \
5  ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

clone完之后,还要去~/.zshrc中把plugins后面加上zsh-autosuggestions和zsh-syntax-highlighting,如下:

1plugins=(
2  git
3  zsh-autosuggestions
4  zsh-syntax-highlighting
5)

还要执行一下下面这两行,这两行是用来是zsh的自动补齐生效的。

1autoload -Uz compinit
2compinit

安装starship(可选)
#

这是一个终端美化工具,如果你本地有rust和cargo环境,可以直接用cargo来安装(如果没有rust,建议尝试一下安装rust,你不会后悔的)。

1cargo install starship --locked

如果没有也不用着急,starship官方还给了脚本安装的方式,curl -sS https://starship.rs/install.sh | sh 这个网址里面有很多别人配置好的预设,你如果有兴趣也可以自己配置。直接把别人的预设复制粘贴到下面这个toml文件内。

1mkdir -p ~/.config
2nano ~/.config/starship.toml

最后可以通过source ~/.zshrc来让自己的配置生效。

安装主题:
#

如果厌倦了原始简洁主题,可以尝试使用一下这个powerlevel10k,很好看的。安装方法是还是推荐clone到oh my zsh的目录,

1git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

然后在.zshrc中找到ZSH_THEME那一行,改成这个

1ZSH_THEME="powerlevel10k/powerlevel10k"

然后再source

1source ~/.zshrc

此时就会进入p10k的配置向导,如果没有自动进入可以手动进入

1p10k configure

在配置的过程中他会问你能否正常显示一些表情,所以在安装这个包之前最好先准备好支持等宽中文的表情字体,比如Maple Mono NF CN。

  • Maple Mono NF CN 可以通过查看这个链接,我们从下图中可以看到,他会推荐使用ArchlinuxCN,我也去问了一下如何添加这个CN到paru源里面。
  • 总共三步,编辑pacman:sudo nano /etc/pacman.conf,其次在文件最末尾添加,
1[archlinuxcn]
2Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch

,最后在保存文件之后,通过这样的命令,

1sudo pacman -Sy archlinuxcn-keyring

此时就可以正常下载这个字体了。

可能存在的问题
#

可能在安装并且设置好默认shell后发现没有改。
#

这个问题好像是ubuntu自带的终端一直存在的问题,就是没有办法去真正的改变他的shell,我自己也试过很多方法,最后都不行。 所以我给出的权宜之计就是使用其他的终端模拟器,就是我上面介绍的两个,anticritty或者ghostty,这两者相对来说,功能更完善的还是使用zig编写的ghostty,但是我还是推荐你使用anticritty,(别问为什么,问就是他是使用rust编写的,我是rust信徒。) 还有一种可能,就是需要logout之后在重新进入才能正确设置成zsh。