shell

1、什么是shell

Shell本質(zhì)就是一個工具箱,而它的作用呢,顧名思義就是包裹在操作系統(tǒng)內(nèi)核外面的那層”殼“,這樣就好理解為什么那些涉及底層的操作要用它了。Ken Thompson開發(fā)的sh是第一種Unix Shell,而各路大神都愛自己造工具,于是乎各種shell就出現(xiàn)了。作為業(yè)余程序猿學會怎么用,我就知足了。

2.為什么是Zsh?

Mac里自帶的Shell很多,通過命令:cat /etc/shells
系統(tǒng)會顯示:

# 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的缺省配置,而后者功能更強大而且基本兼容前者。重要的是后者有一個非常出色的開源的插件包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的缺省功能就很強大,當然配置后會更加強大。

4.1.1 自動補全

Zsh的補全功能非常貼心,按TAB可以補全命令、路徑還有參數(shù)。

4.1.2 殺進程

Bash殺進程需要先用ps aux | grep xxx查找進程的PID,然后才能用kill PID。
Zsh可以直接就kill XXX后面按TAB ,這樣簡單很多

5、環(huán)境變量配置文件

macOS 默認的是 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)級環(huán)境變量,對所有用戶都有效。但它們的加載時機有所區(qū)別:

/etc/profile 任何用戶登陸時都會讀取該文件
/etc/bashrc bash shell執(zhí)行時,不管是何種方式,讀取此文件
/etc/paths 任何用戶登陸時都會讀取該文件

后面幾個是當前用戶級的環(huán)境變量。macOS 默認用戶環(huán)境變量配置文件為 ~/.bash_profile,Linux 為 ~/.bashrc。

如果不存在 ~/.bash_profile,則可以自己創(chuàng)建一個 ~/.bash_profile。

如果 ~/.bash_profile 文件存在,則后面的幾個文件就會被忽略
如果 ~/.bash_profile 文件不存在,才會以此類推讀取后面的文件

如果使用的是 SHELL 類型是 zsh,則還可能存在對應的 /etc/zshrc 和 ~/.zshrc。任何用戶登錄 zsh 的時候,都會讀取該文件。某個用戶登錄的時候,會讀取其對應的 ~/.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)或其他用戶級配置文件即可。添加環(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 命令查看當前環(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 來是配置立即生效。

參考:Mac折騰手記之Zsh
macOS/Linux 環(huán)境變量設置

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容