瞭解到ZSH的強大以後打算將自己目前使用的bash切換到ZSH。具體ZSH比bash強在那裡就不多少了,網上的文章一搜一大把。個人主要是被ZSH強大的自動補全吸引過來的。雖然bash裝了bash-completaion以後也有了一定的自動補全能力,但是和ZSH比起來還是差距太大。
ZSH雖然功能強大,但是配置繁瑣,並且shell指令碼的語法一向比較奇葩,如果自己定製還需要對shell指令碼有一定的瞭解。本來想用ZSH來節省時間,但是還要花大量時間來配置ZSH無疑會生使眾多程式設計師望而卻步。好在github有oh-my-ZSH這個專案,自動把大量的配置給你搞好了,基本上做到了開箱即用。
具體如何安裝ZSH和配置oh-my-zsh就不多說了,請參見https://github.com/robbyrussell/oh-my-zsh。
安裝完畢後執行chsh -s /bin/zsh
將當前預設的shell切換為zsh。另外需要做的是要將以前~/.bash_profile中的配置複製到~/.zshrc中,這樣保證以前在bash中定義的別名、命令等可以繼續正常工作。
雖然說ZSH無縫相容bash,但是剛開始使用還是遇到了一些坑,好歹都一一解決了。
編碼問題
當我執行Octopress部落格的生成部落格命令時,遇到了這個奇怪的錯。
1 2 3 |
|
看起來貌似是預設編碼的問題,ZSH使用的預設編碼是US-ASCII,但我期望的是UTF-8。
ok,檢視當前zsh shell下的編碼是什麼。
1 2 3 4 5 6 7 8 9 |
|
由於沒設值,所以ZSH就選取了US-ASCII。
解決辦法也很簡單,在~/.zshrc
中加入以下兩行。
1 2 3 4 5 6 7 8 9 |
|
萬用字元問題
我又發現如果命令列中有[] *等字元會被zsh優先作為萬用字元處理,這樣導致某些命令會被ZSH錯誤解析。
比如:
1
|
|
這裡的[]是ruby語言中的語法,但是被ZSH解析成了萬用字元,所以報錯。解決方法也簡單,關閉ZSH的這一特性。
在~/.zshrc中加入下面一行即可搞定。
1
|
|