您可以尝试chsh 命令。您确定远程计算机上没有安装 zsh 吗?如果没有,你可以这样做(引自zsh FAQ Section 1.7)
基本思路是用exec把当前的shell换成zsh。通常您可以在登录文件中执行此操作,例如 .profile(如果您的 shell 是 sh 或 ksh)或 .login(如果它是 csh)。确保在尝试之前有某种方法可以更改文件(例如通过 FTP),因为 exec 通常是相当无情的。
如果您的主目录的子目录 bin 中有 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 询问是否执行 zsh。以下适用于 Bourne-like shell:
[ -f $HOME/bin/zsh ] && {
echo "Type Y to run zsh: \c"
read line
[ "$line" = Y ] && exec $HOME/bin/zsh -l
}
对于类似 C-shell 的外壳:
if ( -f ~/bin/zsh ) then
echo -n "Type Y to run zsh: "
if ( "$<" == Y ) exec ~/bin/zsh -l
endif
将它(即使没有 -l)放入 .cshrc 不是一个好主意,至少没有对 csh 应该做什么进行一些测试,因为这会导致 every 实例的 csh 变成 zsh 并会导致不调用 csh -f 的 csh 脚本(是的,不幸的是有些人编写这些脚本)失败。如果您想告诉 xterm 运行 zsh,请在执行 zsh 的同时将 SHELL 环境变量更改为 zsh 的完整路径(实际上,即使您不使用 xterm,这对于一致性也是明智的)。如果你必须从你的 .cshrc 执行 zsh,最低限度的安全检查是 if ($?prompt) exec zsh。
如果您希望您的登录 shell 在进程列表中显示为 -zsh,您可以将 zsh 链接到 -zsh(例如通过 ln -s ~/bin/zsh ~/bin/-zsh)并将 exec 更改为 exec -zsh。 (确保 -zsh 在您的路径中。)这与 -l 选项的效果相同。
脚注:如果您确实具有 root 访问权限,请确保 zsh 进入所有适当机器(包括 NIS 客户端)上的 /etc/shells,否则您可能无法通过 FTP 访问该机器。