顯示具有 zsh 標籤的文章。 顯示所有文章
顯示具有 zsh 標籤的文章。 顯示所有文章

2014年3月11日 星期二

安裝zsh + oh-my-zsh 出現 /usr/bin/env: zsh: 沒有此一檔案或目錄 (/usr/bin/env: zsh -: No such file or directory)

zsh 跟 oh-my-zsh 安裝完,可能會出現類似下面錯誤訊息,雖然他沒任何影響,不過我總覺得怪怪的

# 中文系統
/usr/bin/env: zsh: 沒有此一檔案或目錄

# 英文系統
/usr/bin/env: zsh -: No such file or directory

通常會出現這類的訊息,都是指令找不到。

這邊指zsh這個指令找不到,試試看輸入which zsh看看是不是沒有把zsh這個加到$PATH裡面,沒有的話加入就好了。

如果加入了一樣找不到,我trace了一下zsh的執行過程,通常都是跟oh-my-zsh的安裝順序錯了的時候才會發生。

這時編輯家目錄底下檔案vim ~/.zshrc,會看到

# 他先執行了oh-my-zsh.sh
source $ZSH/oh-my-zsh.sh
# 然而oh-my-zsh.sh已經在使用zsh這個指令了

# 這裡才把宣告路徑,所以當然zsh指令找不到
export PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/bin:/root/bin:/usr/local/bin"

這時就把它們兩個對調一下就好了

# 像這樣把 export PATH 放到 source $ZSH/oh-my-zsh.sh 上面
export PATH="/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/bin:/bin:/root/bin:/usr/local/bin"
source $ZSH/oh-my-zsh.sh
# 這樣oh-my-zsh.sh裡面就可以用zsh指令了

存檔後,登出再進來,他就可以正常使用zsh指令,不再出現這種錯誤訊息了

CentOS zsh 自行編譯

CentOS用yum安裝的zsh版本有點舊,這邊記錄一下,怎麼下載自己安裝

# 下載最新版的 zsh (筆下日期 2014/03/11) 並存檔為 zsh.tar.bz2
wget http://sourceforge.net/projects/zsh/files/latest/download\?source\=files -O zsh.tar.bz2

# 解壓縮
tar xvjf zsh.tar.bz2

# 你的版本不一定是5.0.5,我筆下日期 2014/03/11 到5.0.5版,你的可能更新
cd zsh-5.0.5

# 普通編譯流程,configure後 看缺什麼lib 裝一裝
./configure
make
sudo make install

# 把"/usr/local/bin/zsh" 這串字加到 sudo tee -a /etc/shells 裡
echo "/usr/local/bin/zsh" | sudo tee -a /etc/shells

# 上面那一步 你的 chsh -l 才查得到zsh
# 可以切換到/usr/local/bin/zsh 了
chsh -s /usr/local/bin/zsh

# 重新登入 shell就切換過去了
exit # and relogin

# 跟bash一樣,放個.zshrc檔案在使用者根目錄,讓系統進入zsh前讀取
touch ~/.zshrc # 你的變數 或alias就可以加在這裡面了
# 有點跟bash不一樣的地方是,沒有.zsh_profile,讓系統只讀第一次的檔案

# 如果你有裝oh-my-zsh,建議直接建立軟連結(上面那一步touch就不用做了,做了就先把~/.zshrc刪掉就可以了)
ln -s ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc