2013-03-08 164 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

相关问题