1.安装步骤

该部分参考:

1
2
3
4
5
6
7
mkdir zsh && cd zsh  # 新建文件夹
wget https://sourceforge.net/projects/zsh/files/latest/download # 下载最新版本zsh
xz -d zsh-5.7.1.tar.xz # .tar.xz 文件需要解压两次
tar -xvf zsh-5.7.1.tar
cd zsh-5.7.1
./configure --prefix="绝对路径(我安装在了 zsh/ 下)" # 指定路径configure
make && make install # 安装

2.遇到的问题

① configure 时无 ncurses 依赖

1
2
3
4
5
configure: error: "No terminal handling library was found on your system.
This is probably a library called 'curses' or 'ncurses'. You may
need to install a package called 'curses-devel' or 'ncurses-devel' on your
system."
See `config.log' for more details

解决方法

配置相应环境变量,记得写完后 source ~/.bashrc 使配置生效

1
2
3
4
5
6
export CXXFLAGS="-fPIC"
export CFLAGS="-fPIC"
export NCURSES_HOME=$HOME/ncurses # 你自己的 ncurses 目录
export PATH=$NCURSES_HOME/bin:$PATH
export LD_LIBRARY_PATH=$NCURSES_HOME/lib:$LD_LIBRARY_PATH
export CPPFLAGS="-I$NCURSES_HOME/include" LDFLAGS="-L$NCURSES_HOME/lib"

安装 ncurses

1
2
3
4
5
6
cd ../../ && mkdir ncurses && cd ncurses  # 切换到上级目录新建ncurses文件夹
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.1.tar.gz # 下载最新版本ncurses
tar -xzvf ncurses-6.1.tar.gz # 解压
cd ncurses-6.1
./configure --prefix="绝对路径(我安装在了 ncurses/ 下)" --with-shared --without-debug --enable-widec # 指定路径configure
make && make install # 安装

② 编译出错

编译时出错,提示无 autoconf 依赖,进一步解决依赖问题时,又出现一堆新的依赖等问题;转向另一种思路,在编译时添加 -i 参数,make -i && make isntall -i 从而忽略编译中所有的错误(不知道会有什么潜在风险,但安装后能正常使用)。


3.安装 oh-my-zsh

① 安装步骤

说明:方法 1 和 2 都是官方推荐的安装方法,但有可能受限于国内访问 github 的限制无法成功。

方法 1

1
$ sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"

方法 2

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

方法 3

1
2
3
4
$ git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh 
# 注:
# 1. 克隆后将templates目录下的zsh配置文件拷贝至~/.zshrc即可
# 2. .oh-my-zsh一定要在$HOME下( ~ 下)

② 目前个人在用的 oh-my-zsh 主题和插件

该部分参考:

主题

  • agnoster

修改主题

1
2
3
# 修改 Oh My Zsh 主题
$ sed -i '/^ZSH_THEME=/c\ZSH_THEME="agnoster"' ~/.zshrc
$ source ~/.zshrc

插件

  • zsh-syntax-highlighting(代码高亮)
  • zsh-autosuggestions(自动建议)
  • zsh-completions(自动补全)
  • z (模糊 cd,安装时自带,需打开)
  • extract(万能解压,安装时自带,需打开)尚未打开,记得打开

前 3 个插件需要手动安装并配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 安装
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
$ git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions
$ git clone https://github.com/zsh-users/zsh-completions $ZSH_CUSTOM/plugins/zsh-completions

# 配置
# zsh-com­ple­tions 插件需要将 autoload -U compinit && compinit 添加到.zshrc,输入命令可一键添加
$ [ -z "`grep "autoload -U compinit && compinit" ~/.zshrc`" ] && echo "autoload -U compinit && compinit" >> ~/.zshrc

# 把需要启用的插件写入到配置文件中,使用 sed 命令一键操作
$ sed -i '/^plugins=/c\plugins=(git sudo z zsh-syntax-highlighting zsh-autosuggestions zsh-completions)' ~/.zshrc

# 应用配置
$ source ~/.zshrc

4.更改默认 shell 为 zsh

该部分参考:

该部分做的不明不白,因为一共配置了 2 台服务器上的 zsh,分别使用了参考中的 2 种方法,才各自生效。

方法 1

.bash_profile 里面添加如下内容(路径根据 zsh 编译安装后所在的位置进行修改):

1
exec $HOME/apps/zsh/bin/zsh -l

方法 2

.bashrc 中写入以下内容(路径根据 zsh 编译安装后所在的位置进行修改):

1
echo '[ -f $HOME/apps/zsh/bin/zsh ] && exec $HOME/apps/zsh/bin/zsh -l' >> .bashrc

同样在最后记得 source ~/.bashrc 使配置生效。


5.不显示主机名

该部分参考:

嫌服务器主机名太长,单行输入不了几个字符就得换行,看着难受。同时又因为没有修改 hostname 的权限,故只能通过修改 .zshrc 配置来达到不显示主机名的目的。

~/.zshrc 中添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 隐藏用户名和主机名
prompt_context() {}

# 只保留用户名,隐藏主机名

prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)$USER"
fi
}

# 只保留主机名,隐藏用户名
prompt_context() {
if [[ "$USER" != "$DEFAULT_USER" || -n "$SSH_CLIENT" ]]; then
prompt_segment black default "%(!.%{%F{yellow}%}.)$HOST"
fi
}

改后记得执行 source ~/.zshrc 使配置生效。