kali在2020.4完全用zsh替换掉原来的shell(更新日志),不仅在kali里有效,用xshell连接时也有效。
但ubuntu20.04.1,虽然终端里当前用户名是绿色,但xshell连接时显示白色,这样在上翻查看之前命令及其结果时,满屏都是白色字,不容易找到要找的内容,所以想给ubuntu装上zsh,使用户名等信息明显地和命令及其结果区分开,方便查看之前的记录。安装前后效果对比图在文末,截图是后来在服务器上安装时截的。
装之前搜到了不用zsh的方案,未测试成功,可能我的操作不对。
介绍
oh-my-zsh可以很方便地配置zsh,官网给的安装方式由于魔法力量导致无法下载,它下载的是一个.sh文件,可以手动将此文件内容复制到本地再手动安装,官方文件地址:https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh,由于文件内容会更新,这里就不放出内容了,请自行下载。(这段的参考链接)
注意
如果是在windows里新建文本文件,再将.sh文件内容复制到本地,需将文本文件的换行设为LF,否则传到ubuntu里安装会报错,因windows的换行默认是CRLF。
开始安装
我将上面的.sh文件放在了普通用户家目录
- sudo apt-get install zsh
- sudo apt-get install git # 安装oh-my-zsh需要
- which zsh # 查看zsh安装位置,输出/usr/bin/zsh
- sudo vim /etc/passwd # 更改普通用户和root用户的默认shell为/usr/bin/zsh,即上条命令的结果 (参考链接)
- 对.sh文件添加可执行权限,再分别用普通用户和root用户执行./oh-my-zsh_install.sh,由于文件在普通用户家目录,root用户安装时需进入普通用户家目录。安装完成后会在用户家目录生成.zshrc的配置文件
- vim .zshrc # 修改ZSH_THEME,设置自己喜欢的主题,官方主题预览链接,直接写主题名即可,普通用户和root用户的配置文件都要设置,一些主题推荐,我用的bira或philips或ys
- source .zshrc # 普通用户和root用户都执行
第5步安装时若卡在以下两行:
Cloning Oh My Zsh...
Cloning into '/root/.oh-my-zsh'...
有以下两种方法:
第一种
可去官方github下载整个项目,然后解压到/~/.oh-my-zsh,普通用户和root用户各一份,.oh-my-zsh是隐藏文件夹,没有就手动创建。然后再执行第5步的安装命令,此时会出现以下两行提示:
The $ZSH folder already exists (/root/.oh-my-zsh).
You'll need to remove it if you want to reinstall.
在.sh文件中搜索这两句提示信息,就能找到对应的代码,猜测可以修改一些代码,绕过它的这个检测,我不知道怎么改,有知道的可以说下。
第二种
既然卡在clone的过程,应该是大家都懂的"网络原因",此时可借助github加速脚本,获取官方github的加速git的链接,如图中箭头指向的三个链接中任意一个,
然后将.sh文件中
REMOTE=${REMOTE:-https://github.com/${REPO}.git}
的大括号内的所有内容,修改成加速git的链接,再执行第5步的安装命令。建议安装完成后再改回去,因为不保证这个加速git的链接永久有效。
REMOTE参数的介绍在.sh文件开头的注释中:
# Respects the following environment variables:
# ZSH - path to the Oh My Zsh repository folder (default: $HOME/.oh-my-zsh)
# REPO - name of the GitHub repo to install from (default: ohmyzsh/ohmyzsh)
# REMOTE - full remote URL of the git repo to install (default: GitHub via HTTPS)
# BRANCH - branch to check out immediately after install (default: master)
效果展示
安装成功的提示,我把它作为默认shell,所以选了y
安装前
安装后(默认主题)
bira主题,主题推荐在安装过程的第6步
补充,看到一篇文章介绍了更多内容,使用 ohmyzsh 打造 windows、ubuntu、mac 系统高效终端命令行工具。