树莓派折腾记:安装并配置zsh

文章更新

20170328 初次成文

20170417 更正了有关Autojump的内容

问题提出

今天小苏要为大家介绍的是如何在树莓派上安装和配置zsh,zsh和系统默认的bash一样,都是Linux系统的一种Shell。相对于默认的bash来说,zsh的长处在于自定义与可扩展程度强,人性化程度高。在写这篇文章之前,小苏拿"树莓派 zsh"做关键词在Google上搜索了一下,搜索结果中似乎没有文章能比较系统地介绍如何在树莓派上安装和配置树莓派,所以干脆自己写一篇喽~

正文开始(以下内容默认针对于树莓派的默认用户pi):

安装zsh

首先我们执行以下命令查看一下系统对各Shell的支持情况:

cat /etc/shells

在终端返回的结果中,可能会看到/bin/zsh/usr/bin/zsh的字样,如果没有看到也没关系,我们可以接着进行下一步:

sudo apt-get update #更新软件源索引
sudo apt-get install zsh #安装zsh

zsh安装完成后,再次执行:

cat /etc/shells

不出意外的话,终端应该会返回包含/bin/zsh`0或/usr/bin/zsh字样的结果了。

基础配置

下面我们使用oh-my-zsh来配置zsh,oh-my-zsh是一个快速&自动化配置zsh的项目,项目地址:https://github.com/robbyrussell/oh-my-zsh

cd ~

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh #下载并执行oh-my-zsh自动配置脚本

执行此命令后,脚本将会下载zsh所需的资源和配置文件至~/oh-my-zsh/目录,并将根据你的系统环境变量完成对zsh的配置。

接着,我们可以执行以下命令将zsh切换为此用户的默认Shell(可能需要pi用户的密码):

chsh -s /bin/zsh #无需加sudo

退出终端并再次登录终端,这时命令指示符应该有变化了,说明zsh的基础配置完成。

进阶配置

接着我们对zsh进行"进阶配置"(这里先说配置,之后会对这些配置进行解释):

我们通过更改~/.zshrc文件来对zsh进行进一步的配置:

cd ~

vim .zshrc #编辑zsh配置文件

根据小苏的习惯,对此文件的更改如下(以下内容已包含在原文件中,我们仅需要对其进行修改即可):

ZSH_THEME="blinks"    #将zsh的主题更改为blinks
ENABLE_CORRECTION="true" #(去掉ENABLE前的"#")打开zsh的自动纠错功能
plugins=(git sudo) #为zsh添加git和sudo插件

将以下内容添加到文件的末尾以重定向默认命令或添加自定义命令:

# Alias Settings
alias ll='ls -all'
alias vi='vim'
alias ps='ps -A'
alias ifconfig='sudo ifconfig'

其中,alias ifconfig='sudo ifconfig'这一句比较重要,如果不加此内容,在pi用户下可能会出现无法执行ifconfig命令的情况。

我们还可以安装Autojump插件,以实现快捷定位常用目录(需要在安装之前配置Python环境):

cd ~

git clone git://github.com/joelthelion/autojump.git #从Github克隆Autojump项目
cd autojump

sudo chmod 755 install.py

./install.py #执行安装脚本,安装Autojump

在脚本执行结果的末尾,你将会看到类似这样的内容(实际内容可能不一样):

[[ -s /home/pi/.autojump/etc/profile.d/autojump.sh ]] && source /home/pi/.autojump/etc/profile.d/autojump.sh
autoload -U compinit && compinit -u

复制终端中这段内容,添加到~/.zshrc文件末尾即可启用Autojump。接着,我们可以执行以下命令重载.zshrc文件以更新zsh配置:

source .zshrc #重载zsh配置文件

关于"进阶配置"的解释

1.开启自动纠错:

当纠错功能开启后,当你键入的命令被zsh判定为"可能错误的命令"时,将会提示你是否将此命令重定向为"zsh认为可能正确的命令",比如键入iconfig命令时,zsh将会返回以下提示:

zsh: correct 'iconfig' to 'ifconfig' [nyae]?

键入 y 即可将刚刚输入的iconfig命令重定向到ifconfig命令:

2017-03-28_6_21_49_下午.jpg

2.开启sudo插件:

开启sudo插件后,如果遇到上一条命令因为未在命令头部添加sudo命令而保存的情况时,只需要双击"Esc"键,即可自动为刚才键入的最后一条命令补全sudo。

3.重定向默认命令或添加自定义命令:

在.zshrc文件中添加alias字段即可重定向默认命令或添加自定义命令,如在终端中执行ll命令,相当于执行ls -all文件,执行ps命令则相当于执行ps -A命令:

2017-03-28_6_22_11_下午.jpg

4.添加并启用Autojump插件:

启用Autojump插件后,插件将记录你经常定位的目录,存储到数据库中,当之后想要访问此目录时,只需要键入:

j <目录简称>

即可快速定位。比如/var/www/html是我经常定位的目录。如果我想快捷访问此目录,只需要键入:

j html

即可快速定位。

Screenshot_20170417-101520.png

参考资料

oh-my-zsh配置你的zsh提高shell逼格终极选择:
http://yijiebuyi.com/blog/b9b5e1ebb719f22475c38c4819ab8151.html

高效Linux之autojump的安装、配置与使用:
http://www.linuxdiyf.com/linux/13711.html