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

我的原文:https://www.hijerry.cn/p/37831.html

问题

今天刚申请了一个服务器账号,登上去发现没有zsh。

因为没有root权限,也就无法使用apt-get命令了。

解决思路如下:

  1. 编译、安装zsh到家目录 (make 时可能找不到 autoconf
  2. 把安装好的zsh所在的目录添加到 PATH 环境变量中
  3. 登录后自动切换到 zsh
  4. 安装oh-my-zsh (不需要root)

下面是详细过程和遇到的问题及解决方法

安装zsh

官方文档:http://zsh.sourceforge.net/FAQ/zshfaq01.html

下载源码:

wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download

解压:(注意,下载下来的文件是xz格式的)

xz -d zsh.tar.xz # 会把xz文件解压成tar文件
mkdir zsh        # 建立目录用来保存zsh源码
tar -xvf zsh.tar -C zsh --strip-components 1 # 解压tar文件到zsh目录

编译:

./configure --prefix=$HOME  #表示安装到家目录
make
make install

如果遇到找不到 autoconf 的错误,则需要手动安装。

编译、安装autoconf到家目录:

wget http://ftp.gnu.org/gnu/autoconf/autoconf-latest.tar.gz
mkdir autoconf-soruce
tar -zxvf autoconf-latest.tar.gz -C autoconf-soruce/ --strip-components 1
cd autoconf-soruce/
./configure --prefix=$HOME   # 安装到家目录
make
make install

更新PATH

这样以来 zsh 安装到 $HOME/bin 下面,并且会自动添加环境变量,但是重新登陆后就找不到了。

所以记得手动更新 PATH ,我是选择写入 ~/.bash_profile 文件。

echo 'export PATH="$HOME/bin:$HOME/.local/bin:$PATH"' >> ~/.bash_profile

这样操作之后就可以在命令行使用 zsh 了,但是不会默认使用 zsh 作为交互程序。

两条思路:

  1. 使用chsh (可以尝试,但是我失败了,因为没有权限写入 /etc/shells
  2. 修改启动脚本,自动切换到 zsh (官方推荐的方式)

我还是选择写入 ~/.bash_profile文件:

echo '[ -f $HOME/bin/zsh ] && exec $HOME/bin/zsh -l' >> ~/.bash_profile

安装oh-my-zsh

一行代码搞定:

wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh

值得注意的是上述脚本的一段代码:

TEST_CURRENT_SHELL=$(expr "$SHELL" : '.*/\(.*\)')
if [ "$TEST_CURRENT_SHELL" != "zsh" ]; then
    # If this platform provides a "chsh" command (not Cygwin), do it, man!
    if hash chsh >/dev/null 2>&1; then
        printf "${BLUE}Time to change your default shell to zsh!${NORMAL}\n"
        chsh -s $(grep /zsh$ /etc/shells | tail -1)
    # Else, suggest the user do so manually.
    else
        printf "I can't change your shell automatically because this system does not have chsh.\n"
        printf "${BLUE}Please manually change your default shell to zsh!${NORMAL}\n"
    fi
fi

干了啥?如果系统默认shell不是zsh的话,会尝试使用 chsh 命令切换到 /etc/shells 列表里的 zsh,如果切换失败就会提示错误。

有什么影响?如果全局已经有zsh的情况下,这个脚本会主动把默认shell切换成全局的zsh,而不会使用本地的zsh。这对我来说没什么影响。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
oh-my-zsh 是一个开源的、社区驱动的 zsh 配置管理框架,它提供了一系列的插件、主题和自定义选项,使得用户可以轻松地定制和管理自己的 zsh 终端环境。它旨在提供一个更强大、更易用的终端工具。 而 oh-my-zsh-git 是 oh-my-zsh 在 GitHub 上的一个 fork 版本,它基于原版的 oh-my-zsh,对其进行了一些修改和扩展。oh-my-zsh-git 主要的目的是为了扩展和增强原版 oh-my-zsh 的功能,并从社区中收集和整合更多的插件和主题。 具体来说,oh-my-zsh-git 与 oh-my-zsh 的区别主要体现在以下几个方面: 1. 功能扩展:oh-my-zsh-git 在原版 oh-my-zsh 的基础上增加了一些功能和工具,使得终端使用起来更加方便和高效。 2. 插件和主题:oh-my-zsh-git 提供了更多的插件和主题选项,且会持续更新和增加。用户可以根据自己的需求选择和使用不同的插件和主题。 3. 扩展性:oh-my-zsh-git 更加注重可扩展性,用户可以自定义添加新的插件和主题,或者根据自己的需要修改现有的插件和主题。 4. 社区支持:oh-my-zsh-git 的社区活跃度较高,用户能够得到更多的帮助和支持,同时也能够贡献自己的代码和改进。 综上所述,oh-my-zsh-git 是在 oh-my-zsh 基础上进行的一些改进和扩展,提供了更多的插件和主题选项,同时注重用户的自定义和扩展能力。用户可以根据自己的需求选择采用哪个版本。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值