2013-03-08 248 views

回答

7

你可以嘗試chsh命令。你確定zsh沒有安裝在遙遠的電腦上嗎?如果沒有,你可以做到這一點(從zsh FAQ Section 1.7報價)

的基本思想是使用exec來替換的zsh當前的shell。通常,您可以在.profile(如果您的shell是sh或ksh)或.login(如果是csh)等登錄文件中執行此操作。確保你有辦法改變這個文件(例如通過FTP),然後再嘗試這個,因爲exec通常是不可原諒的。

如果你在你的主目錄的子目錄斌zsh的,把這個.profile文件:

[ -f $HOME/bin/zsh ] && exec $HOME/bin/zsh -l 

,或者如果你的登錄shell是csh或tcsh,把這個的.login:

if (-f ~/bin/zsh) exec ~/bin/zsh -l 

(在每種情況下,-l都告訴zsh它是一個登錄shell)。

如果你想查詢自己提交給它在此之前的作品,你可以登錄shell詢問是否給exec zsh的。對於類似Bourne外殼下面的工作:

[ -f $HOME/bin/zsh ] && { 
     echo "Type Y to run zsh: \c" 
     read line 
     [ "$line" = Y ] && exec $HOME/bin/zsh -l 
} 

和C-殼狀殼:

if (-f ~/bin/zsh) then 
     echo -n "Type Y to run zsh: " 
     if ("$<" == Y) exec ~/bin/zsh -l 
endif 

這不是把這個(即使沒有-l)一個好主意,爲的.cshrc ,至少沒有什麼一些測試的CSH是應該做的,因爲這將導致CSH的每一個實例變成zsh的,並會導致CSH腳本(是的,不幸的是有些人寫的這些),這不叫csh -f失敗。如果你想告訴xterm運行zsh,在執行zsh的同時將SHELL環境變量更改爲zsh的完整路徑(實際上,即使不使用xterm,這對於一致性也是明智的)。如果您必須從.cshrc中執行zsh,則最低安全檢查是否爲($?prompt)exec zsh。

如果你喜歡你的登錄shell以-zsh的形式出現在進程列表中,你可以將zsh鏈接到-zsh(例如通過ln -s〜/ bin/zsh〜/ bin/-zsh)並將exec更改爲exec -zsh。 (確保-zsh在你的路徑中。)這與-l選項具有相同的效果。

腳註:如果你有root權限,確保zsh的推移在/ etc /在所有適當的機器外殼,包括NIS客戶,或者你可能有FTP到那臺機器的問題。

2

如果機器上有zsh,你應該沒問題,只需在交換提示符下執行zsh,如果這樣做,你可以嘗試chsh交換你的shell(應該沒有root的工作)或者當你連接sshssh -t hostname zsh自動啓動。

-1

創建用戶帳戶目錄的目錄,解壓zsh後使用./configmakemake install

+1

問題是關於安裝*沒有root權限。 – 2014-05-07 12:21:52

29

下載zsh中有:

wget -O zsh.tar.gz https://sourceforge.net/projects/zsh/files/latest/download 
mkdir zsh && tar -xvzf zsh.tar.gz -C zsh --strip-components 1 
cd zsh 

您可以編譯zsh的自己,例如:從當前的shell啓動文件

./configure --prefix=$HOME 
make 
make install 

,然後明確地啓動它,或以編程方式(把exec $HOME/bin/zsh -l在正確的位置)。

+0

在版本5.2上,前綴應該只是'--prefix = $ HOME',否則會以'$ HOME/bin/bin'結尾 – ilija139 2016-02-08 07:47:26

+0

@ ilija139謝謝,已更正。 – Jens 2016-02-08 08:22:34

+0

剛纔注意到'lib'文件夾也放在'$ HOME'中:/ 也許最好是安裝到其他文件夾並將它鏈接到'$ HOME/bin' – ilija139 2016-02-08 09:59:50