在没有root访问权限的情况下安装zsh? [关闭]

Posted

技术标签:

【中文标题】在没有root访问权限的情况下安装zsh? [关闭]【英文标题】:Install zsh without root access? [closed] 【发布时间】:2013-02-23 23:06:18 【问题描述】:

有可能(以及如何)?对于我有 ssh 访问权限(但没有 root 访问权限)的几台远程计算机,我真的需要这个。

【问题讨论】:

为什么要关闭?!这是对社区非常有帮助的问答。 嗨,对不起。这不是非常具体的编程,它非常广泛。也许一个不以编码为导向的问答社区可以提供帮助 预编译二进制文件:github.com/romkatv/zsh-bin/releases 【参考方案1】:

下载zsh:

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

你可以自己编译zsh,例如:

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

然后显式启动它,或者从当前 shell 的启动文件以编程方式启动它(将 exec $HOME/bin/zsh -l 放在正确的位置)。

【讨论】:

在 5.2 版上,前缀应该只是 --prefix=$HOME,否则将以 $HOME/bin/bin 结尾 @ilija139 谢谢,已更正。 刚刚注意到lib文件夹也放在$HOME中:/也许最好安装到其他文件夹并将其符号链接到$HOME/bin 最新的 zsh 版本压缩包是tar.xz 格式。上面的命令不再起作用了。 @shreyasgm 感谢您的宝贵贡献。我已经相应地更新了命令。【参考方案2】:

您可以尝试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 访问该机器。

【讨论】:

【参考方案3】:

如果机器上有 zsh,你应该可以在提示交换时执行 zsh,如果可行,你可以尝试 chsh 交换你的 shell(应该在没有 root 的情况下工作)或者当你'重新连接ssh 输入ssh -t hostname zsh 以自动启动它。

【讨论】:

【参考方案4】:

在您的用户帐户目录中创建一个目录,解压缩zsh,然后使用./configmakemake install

【讨论】:

问题是关于安装没有根访问权限。

以上是关于在没有root访问权限的情况下安装zsh? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 root 访问权限的情况下获取已安装应用程序的 APK?

如何在没有 root 访问权限的情况下安装 python 模块?

不使用root权限安装zsh和oh-my-zsh

如何在没有 root 的情况下从 Ubuntu 18.04.3 中完全删除节点?

如何在没有 root 权限的情况下安装 Perl 模块?

在没有 root 权限的情况下安装 matplotlib 及其依赖项