1钧唐、什么是shell
Shell本質(zhì)就是一個(gè)工具箱忙灼,而它的作用呢,顧名思義就是包裹在操作系統(tǒng)內(nèi)核外面的那層”殼“钝侠,這樣就好理解為什么那些涉及底層的操作要用它了该园。Ken Thompson開發(fā)的sh是第一種Unix Shell,而各路大神都愛自己造工具帅韧,于是乎各種shell就出現(xiàn)了里初。作為業(yè)余程序猿學(xué)會(huì)怎么用,我就知足了忽舟。
2.為什么是Zsh双妨?
Mac里自帶的Shell很多淮阐,通過命令:cat /etc/shells
系統(tǒng)會(huì)顯示:
# 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
這么多種Shell里面,我用過的就Bash和Zsh斥难,前者是Mac和Linux的缺省配置,而后者功能更強(qiáng)大而且基本兼容前者帘饶。重要的是后者有一個(gè)非常出色的開源的插件包oh-my-zsh哑诊,讓Zsh原本繁瑣的配置過程變得美好起來了。
3.安裝與配置
3.1 Zsh的安裝與配置
3.1.1 安裝Zsh
如果全新安裝及刻,建議使用:brew install zsh镀裤。
3.1.2 配置Zsh
Zsh替換Bash的方法:chsh -s /bin/zsh,重啟終端后即為Zsh了缴饭。
注意:你之前如果使用過Bash暑劝,肯定修改了它的配置文件/.bash_prorile。同樣颗搂,現(xiàn)在使用Zsh担猛,自己也有配置文件/.zshrc,就需要將原來的配置拷貝過來丢氢。
4 功能介紹
4.1 Zsh的缺省功能
Zsh的缺省功能就很強(qiáng)大傅联,當(dāng)然配置后會(huì)更加強(qiáng)大。
4.1.1 自動(dòng)補(bǔ)全
Zsh的補(bǔ)全功能非常貼心疚察,按TAB可以補(bǔ)全命令蒸走、路徑還有參數(shù)。
4.1.2 殺進(jìn)程
Bash殺進(jìn)程需要先用ps aux | grep xxx查找進(jìn)程的PID貌嫡,然后才能用kill PID比驻。
Zsh可以直接就kill XXX后面按TAB ,這樣簡單很多
5岛抄、環(huán)境變量配置文件
macOS 默認(rèn)的是 Bourne Shell别惦,其環(huán)境變量配置文件及加載順序如下:
/etc/profile
/etc/bashrc
/etc/paths
~/.bash_profile # macOS
~/.bash_login
~/.profile
~/.bashrc # linux
其中 /etc/profile /etc/bashrc 和 /etc/paths 是系統(tǒng)級(jí)環(huán)境變量,對(duì)所有用戶都有效夫椭。但它們的加載時(shí)機(jī)有所區(qū)別:
/etc/profile 任何用戶登陸時(shí)都會(huì)讀取該文件
/etc/bashrc bash shell執(zhí)行時(shí)步咪,不管是何種方式,讀取此文件
/etc/paths 任何用戶登陸時(shí)都會(huì)讀取該文件
后面幾個(gè)是當(dāng)前用戶級(jí)的環(huán)境變量益楼。macOS 默認(rèn)用戶環(huán)境變量配置文件為 ~/.bash_profile猾漫,Linux 為 ~/.bashrc。
如果不存在 ~/.bash_profile感凤,則可以自己創(chuàng)建一個(gè) ~/.bash_profile悯周。
如果 ~/.bash_profile 文件存在,則后面的幾個(gè)文件就會(huì)被忽略
如果 ~/.bash_profile 文件不存在陪竿,才會(huì)以此類推讀取后面的文件
如果使用的是 SHELL 類型是 zsh禽翼,則還可能存在對(duì)應(yīng)的 /etc/zshrc 和 ~/.zshrc屠橄。任何用戶登錄 zsh 的時(shí)候,都會(huì)讀取該文件闰挡。某個(gè)用戶登錄的時(shí)候锐墙,會(huì)讀取其對(duì)應(yīng)的 ~/.zshrc。
6长酗、添加環(huán)境變量
- 系統(tǒng)環(huán)境變量 /etc/paths(不建議修改)
- 系統(tǒng)環(huán)境變量 /etc/profile 和 /etc/bashrc(不建議修改)
- 用戶環(huán)境變量
用戶環(huán)境變量
添加用戶環(huán)境變量溪北,只需要修改 ~/.bash_profile(Bourne Shell)或 ~/.zshrc(zsh)或其他用戶級(jí)配置文件即可。添加環(huán)境變量的語法也是:
export PATH="$PATH:<PATH 1>:<PATH 2>:<PATH 3>:...:<PATH N>"
下面是我的 ~/.zshrc 的部分配置:
export ANDROID_HOME=~/Library/Android/sdk
export PATH=$PATH:~/Library/Android/sdk/tools:~/Library/Android/sdk/platform-tools
export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/support-files
alias tree="find . -print | sed -e 's;[^/]*/;|____;g;s;____|; |;g'"
alias t="trans"
export PATH="/usr/local/sbin:$PATH"
可以通過 echo $PATH 命令查看當(dāng)前環(huán)境變量:
echo $PATH
/usr/local/sbin:/Users/jh/.nvm/versions/node/v7.6.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/Users/jh/Library/Android/sdk/tools:/Users/jh/Library/Android/sdk/platform-tools:/usr/local/mysql/bin:/usr/local/mysql/support-files:/Applications/Sublime Text.app/Contents/SharedSupport/bin
修改了配置文件之后夺脾,依舊需要重新登錄 SHELL 或者使用 source ~/.zshrc 來是配置立即生效之拨。