Linux非root用户 Oh My ZSH 使用攻略

由于oh-my-zsh相关文件是每个用户独有的,不是所有用户共用一份的,在服务器上给root用户配好了oh-my-zsh,但大部分时候要用非root用户操作,用惯了oh-my-zsh,没有这个很难受,打算给自己普通用户也安装一个,搜了很多教程折腾了一晚才配好了,遇到不少问题,打算记录一下。

安装ZSH

  • 下载解压源码。因为直接apt or yum都需要sudo,所以得下源码编译安装

    1
    2
    3
    4
    5
    ## 下载源码
    wget -O zsh.tar.xz https://sourceforge.net/projects/zsh/files/latest/download
    ## 解压
    xz -d zsh.tar.xz ## 解压xz文件,提示xz命令不存在的话安装一下xz
    tar -xvf zsh.tar ## 解压tar文件
  • 配置和安装

    1
    2
    3
    ./configure --prefix=$HOME/usr/
    make
    make install

    第一条命令执行过程中可能会出现这个问题:

    1
    2
    > configure: error: "No terminal handling library was found on your system. This is probably a library called curses or ncurses. You may need to install a package called 'curses-devel' or 'ncurses-devel' on your system"
    >

    原因是这个curses-devel或ncurses-devel没有安装,所以还需要找到其中一个的source code编译安装一下:

    Ubuntu可以使用libncurses5-dev替代ncurses-devel

    1
    2
    > apt-get install libncurses5-dev
    >

    CentOS直接安装ncurses-devel

    1
    2
    > yum install ncurses-devel
    >

    第二步安装过程可能会因为系统没安装gcc或者make编译器而失败,根据提示安装相应编译器再回来操作

  • 检查是否安装成功。运行下面命令看是否进入zsh shell

    1
    ~/usr/bin/zsh

    测试无误后输入exit退出zsh

安装oh-my-zsh

  • 运行安装脚本,如果你在此前尝试过安装Oh My Zsh,务必先删除:rm -rf ~/.oh-my-zsh

    1
    sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
    • 这一步操作时候如果提示Unable to establish SSL connection,先查看是否安装好了openssl,如果没用就尝试直接使用wget禁用SSL验证来获取这个install.sh文件:

      1
      2
      3
      wget --no-check-certificate https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh
      ## 然后使用以下命令运行该文件
      bash install.sh
    • 如果这样操作提示没有权限运行/root下的/.oh-my-zsh,则是因为环境变量没有随用户切换而切换

      解决办法是ctrl + d退回能最开始的用户,通过su -切换用户

      1
      2
      3
      4
      su - 用户名
      ## 查看一下
      echo $ZSH
      ## 没有输出东西的话就可以接着运行bash install.sh命令了

      su 用户 :只切换身份

      su - 用户 :身份和shell(包含环境变量)都切换

  • 无论你是怎样得到并运行install.sh的,只要得到下列结果就表明安装成功:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
             __                                     __
    ____ / /_ ____ ___ __ __ ____ _____/ /_
    / __ \/ __ \ / __ `__ \/ / / / /_ / / ___/ __ \
    / /_/ / / / / / / / / / / /_/ / / /_(__ ) / / /
    \____/_/ /_/ /_/ /_/ /_/\__, / /___/____/_/ /_/
    /____/ ....is now installed!


    Please look over the ~/.zshrc file to select plugins, themes, and options.

    p.s. Follow us at https://twitter.com/ohmyzsh.

    p.p.s. Get stickers and t-shirts at https://shop.planetargon.com.

    运行exec $HOME/usr/bin/zsh检查是否正常

  • 更改默认shell

    因为没有root权限所以chsh用不了,只能修改.bashrc文件来实现功能,末尾追加已下语句

    1
    2
    # use zsh
    exec $HOME/usr/bin/zsh

    运行exec $HOME/usr/bin/zsh确认shell没问题,然后source ~/.bashrc

    不然会导致直接断开ssh连接,而且重新ssh也会导致断开连接。

  • 如果真出现ssh上不去的情况,可以运行下面代码试试:

    1
    2
    3
    ssh -t username@hostname /bin/bash
    # 或者
    ssh username@hostname "bash --noprofile --norc"

    之后恢复原来的.bashrc文件即可

参考链接:

没有 Root 权限 Oh My Zsh 使用攻略

Linux非root用户安装zsh和oh-my-zsh

安装oh-my-zsh报错could not create work tree dir ‘/root/.oh-my-zsh’.: Permission denied的原因&解决办法