参考网址
blog.csdn.net/qq_40520596…
二者之间的比较
zsh越来越受更多人的欢迎,号称终极"shell".
从一个交互式终端的角度来看,zsh更加强大,而bash更符合posix标准,因此bash更加适合做脚本解释器。
bash上手快,基本直接就可以使用,但是zsh则需要繁杂的配置(还需要用到 oh-my-zsh),具体配置在后面讲述;
zsh有几大特点明显优于bash,具体特点如下:
① 色彩高亮、拼写检查:
根据你输入的内容来判断颜色种类,例如:白色代表普通命令或者程序内容,红色代表错误命令等;
② 命令提示:
这个可以说是最方便的功能,输入某命令后,后面就用灰色给你提示该命令的参数,随着动态不断输入,提示还会根据内容不断更新;
③ 智能补全:
传统shell的补全功能在zsh面前则是黯淡无光,尤其是在长路径切换的时候,不用像bash一样持续提示你需要继续输入,只用连续敲击两次 TAB 键 zsh 给你一个补全目录,让你来进行选择。
如何配置zsh
安装zsh
sudo apt-get install zsh
把默认的Shell改成zsh
chsh -s /bin/zsh
注意:不要使用sudo。
如果总是报 chsh: PAM: Authentication failure, 则需配置密码文件,解决chsh: PAM认证失败的问题
sudo vim /etc/passwd
把第一行的/bin/bash改成/bin/zsh,这个是root用户的。
把当前用户的/bin/bash改成/bin/zsh,一般安装后默认已经是zsh。
安装oh-my-zsh
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
查看当前linux系统可以使用的shell
cat /etc/shells
输出:
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/bin/zsh
/usr/bin/zsh
查看当前使用的shell是啥
一、最常用的查看shell的命令,但不能实时反映当前shell
echo $SHELL
```
/usr/bin/zsh
```
二、下面这个用法并不是所有shell都支持
echo $0
```
-zsh
```
三、环境变量中shell的匹配查找
env | grep SHELL
```
SHELL=/usr/bin/zsh
```
四、口令文件中shell的匹配查找
cat /etc/passwd | grep root
```
root:x:0:0:root:/root:/usr/bin/zsh
```
五、查看当前进程
ps
```
PID TTY TIME CMD
377834 pts/1 00:00:00 zsh
377874 pts/1 00:00:00 ps
```
六、先查看当前shell的pid,再定位到此shell进程\
echo $$
```
377834
```
ps -ef | grep 377834
```
root 377834 377800 0 07:17 pts/1 00:00:00 -zsh
root 377879 377834 0 07:24 pts/1 00:00:00 ps -ef
root 377880 377834 0 07:24 pts/1 00:00:00 grep 377834
```
附:一条命令即可实现:
ps -ef | grep `echo $$` | grep -v grep | grep -v ps
```
root 377834 377800 0 07:17 pts/1 00:00:00 -zsh
```
七、输入一条不存的命令,查看出错的shell提示
tom
```
zsh: tom: command not found
```