mac 更换/bin/bas为 zsh

Z shell(Zsh)是一款可用作交互式登录的shell及脚本编写的命令解释器。Zsh对Bourne shell做出了大量改进,同时加入了Bash、ksh及tcsh的某些功能。
来自:wikipedia

使用zsh

MAC 默认自带了zsh,如果没有可以去自行安装:

首先查看是否有 zsh

cat /etc/shells

1
2
3
4
5
6
7
8
9
10
11
➜  ~ cat /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

可以手动安装

1
brew install zsh

切换到 /bin/zsh

1
chsh -s /bin/zsh

重启终端/iTerm查看效果,也可以通过 chsh 再切换回 bash

设置主题

clone 一份配置好的开源主题库,没有git可以打开地址直接下载文件

1
git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh

替换配置文件 .zshrc

1
2
3
4
# 有配置先备份
cp ~/.zshrc ~/.zshrc.orig
# 覆盖
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

选择喜欢的主题

修改~/.zshrc 中配置,设置你喜欢的主题,也可以设置成随机 ZSH_THEME=”random”

1
2
3
# See https://github.com/robbyrussell/oh-my-zsh/wiki/Themes
# 设置你喜欢的主题
ZSH_THEME="robbyrussell"

修改后可以重启终端查看,或者执行 zsh -i

可能出现主机名变成 bogon

在终端中执行以下命令即可(需要输入一次管理员密码)

1
2
3
sudo hostname your-desired-host-name
sudo scutil --set LocalHostName $(hostname)
sudo scutil --set HostName $(hostname)

参考:https://air20.com/archives/486.html

npm安装全局命令丢失,hexo nrm 等

找到npm全局模块目录,修改 ~/.zshrc 文件 导入node全局目录的path

1
2
3
4
# If you come from bash you might have to change your $PATH.
export PATH=$HOME/bin:/usr/local/bin:$PATH
# 导入npm全局模块位置
export PATH=~/.npm-global/bin:$PATH

最后重启终端,其它丢失命令的情况解决方案类似

推荐代码代码补全插件 autosuggestions:

下载该插件到.oh-my-zsh的插件目录

1
git clone git://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions

编辑.zshrc文件,找到plugins=(git)这一行,如果没有添加

1
plugins=(git zsh-autosuggestions)