Please enable Javascript to view the contents

Linux下的shell选购

 ·  ☕ 4 分钟

Powerline字体安装

先配置主题

  • 打开 Powerline ,并参照上面的安装方法进行安装

shell选择

bash

不够美观,功能还没人家多,略略略

zsh 或 Oh My Zsh

Zsh 兼容 Bash,据传说 99% 的 Bash 操作 和 Zsh 是相同的。

  • 安装 zsh

    1
    
    sudo apt install zsh
    
  • 安装 Oh-My-Zsh

    1
    
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
    
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 查看当前有哪些shell
cat /etc/shells
# 当前使用的shell
echo $SHELL
# 当前可用主题(一大把)
ls ~/.oh-my-zsh/themes
# 插件目录 ~/.oh-my-zsh/plugins

# 安装autojump(还需要配置见链接,windows中居然有个Clink见autojump的github页面)
yum install autojump-zsh
  • oh-my-zsh 的安装目录:~/.oh-my-zsh
  • Zsh 的配置文件位置:~/.zshrc
  • 为 root 用户(或你自己的用户名)设置 zsh 为系统默认 shell:chsh -s /bin/zsh root
  • 如果你要重新恢复到 bash:chsh -s /bin/bash root

zshrc的配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 从上到下,尽量把这些配置放在相应位置

# zhs的主题,需要终端配置为 256 ...
ZSH_THEME="ys"
# 使用随机主题
ZSH_THEME="random"

# 有些插件需要自己下载
# z命令快速跳转目录     x命令解压一切文件         命令行可以直接google  
plugins=(
  git z zsh-autosuggestions extract  zsh-syntax-highlighting 
)
 
# 自动更新的时间间隔,单位是天,这里设置 30 天更新一次
export UPDATE_ZSH_DAYS=30

几个插件的安装链接:

autojump安装时的小插曲:

autojump:选择手动安装(MANUAL),将其安装到 ~/.autojump 目录下

1
2
3
4
5
git clone git://github.com/joelthelion/autojump.git ~/.autojump
cd ~/.autojump
./install.py # 或者 python3 install.py
# 添加如下配置到 .zshrc 文件末尾
[[ -s ~/.autojump/etc/profile.d/autojump.sh ]] && . ~/.autojump/etc/profile.d/autojump.sh

安装时 autojump 提示找不到 python,

/usr/bin/env: 'python': No such file or directory

明明有python却说没有,那我就这样 python3 install.py 安装,但当使用cd命令时,多了这一行提示,还是说没有 python :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# autojump会记录cd切换过的目录,所以会看到autojump的提示
$ cd .oh-my-zsh
/usr/bin/env: 'python': No such file or directory       # 提示内容   
# 真的没有 python 吗?
$ which python
python: aliased to python3
$ python --version
Python 3.6.5
$ /usr/bin/env python --version
/usr/bin/env: 'python': No such file or directory
$ whereis python
python: /usr/bin/python3.6 /usr/bin/python3.6m

在网上搜了一下,方法大概就是安装 python 什么的,比如通过 sudo apt install python-minimal 安装python,但我已经有python了,不想再安装。最后在 autojump 的 issues 中找到了解决方法 ,见 ‘python’: No such file or directory · Issue #577 · wting/autojump ;使用下面的命令或手动将文件中的 python改为 python3即可:

sed -i "s/\#\!\/usr\/bin\/env\ python/\#\!\/usr\/bin\/env\ python3/" ~/.autojump/bin/autojump

途中还了解一下/usr/bin/env 是什么 ,env是一个命令:
env - Wikipedia
#!/usr/bin/python3#!/usr/bin/env python3 的作用 - 简书
还是有收获,比如知道了 !# 原来还有类似 Shebang 的各种名字。

**维基百科:**Env 是用于 Unix 和类 Unix 操作系统的 shell 命令。 它用于打印环境变量列表,或者在已更改的环境中运行另一个实用程序,而无需修改当前的现有环境。 使用 env,可以添加或删除变量,并且可以通过为现有变量赋予新值来更改它们。实际上,env 还有另一个常见用途。 Shell 脚本经常使用它来启动正确的解释器。 在这种用法中,通常不会更改环境。

env man手册:

env命令用于显示系统中已存在的环境变量,以及在定义的环境中执行指令。该命令只使用"-“作为参数选项时,隐藏了选项”-i"的功能。若没有设置任何选项和参数时,则直接显示当前的环境变量。

如果使用env命令在新环境中执行指令时,会因为没有定义环境变量"PATH"而提示错误信息"such file or directory"。此时,用户可以重新定义一个新的"PATH"或者使用绝对路径。

在WSL中使用zsh插件时出现的问题:

1
2
3
4
5
6
[oh-my-zsh] Insecure completion-dependent directories detected:
# 下面带有一大串信息,大概意思是目录权限过高,比如
drwxrwxrwx 1 fan fan 512 Dec  9 04:14 /home/fan/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting
# 并提示可以使用 compaudit 命令来解决
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]? y%

可以使用下面的方法解决,运行下面两条命令:

1
2
compaudit | xargs chown -R "$(whoami)"
compaudit | xargs chmod -R go-w

fish shell

可以通过输入fish_config 命令会启动web管理界面,比如可以在该配置界面选择主题

优势:

  • 语法高亮:错误命令显示红色
  • 通配符:集成find命令,搜索方便。比如 ls **.json 同时会搜索非本目录
  • 智能建议:选择建议的方法是 按 右箭头
  • set赋值:通过set代替 = 对应变量赋值。没有export需要用set -x代替

缺点:

  • 对 bash 脚本兼容性差。

靠,不想找太多麻烦,不用了

其配置文件位于 ~/.config/fish 目录下,其配置方式和 bash 不同。

Linux | zsh+on-my-zsh 配置 | 醉渔小站

最近发现了这个列表:Awesome-shell

您的鼓励是我最大的动力
alipay QR Code

Felix
作者
Felix
如无必要,勿增实体。

3

目录