【问题标题】:Installing RVM and gems on OSX from a single shell script从单个 shell 脚本在 OSX 上安装 RVM 和 gems
【发布时间】:2016-01-26 09:07:51
【问题描述】:

我正在尝试从一个 bash 脚本安装 RVM 和一些 gem,我用来引导一个新的开发框。我的目标是拥有一个可以在全新安装的 OSX 上运行的脚本,以安装我用于开发的所有内容。

安装 RVM 后,我正在获取 $HOME/.rvm/scripts/rvm 脚本,但是在下一行中,当我尝试安装特定版本的 ruby​​ 时,它说找不到 rvm。这是我的脚本。

gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrew

source "$HOME/.rvm/scripts/rvm"

rvm install 2.1.1
rvm use 2.1.1

gem install jekyll
gem install tmuxinator
gem install scss-lint

我不明白为什么这不起作用,因为如果我在终端中单独运行每个命令,一切都会很好。

关于安装 RVM、特定版本的 Ruby 和一些 gem 的 1 个脚本解决方案有什么想法吗?

【问题讨论】:

    标签: ruby macos bash rvm


    【解决方案1】:

    您可能需要将“source ~/.rvm/scripts/rvm”添加到您的 ~/.bash_profile 文件中。

    echo "source $HOME/.rvm/scripts/rvm" >> ~/.bashrc
    

    要安装 rvm:

    rm -rf ~/.rvm
    curl -L https://get.rvm.io | bash -s stable
    

    在您的脚本类型中:

    type_rvm=$(type rvm | head -n 1)
    echo "type rmv: $type_rvm"
    

    您可以尝试导出 rvm:

    export PATH=$PATH:/opt/rvm/bin:/opt/rvm/sbin
    

    【讨论】:

    • 此时我希望避免向 .bashrc 添加任何内容。基本上,这个脚本在我设置 bash\zsh 环境之前运行。稍后在我的脚本中,我从 git repo 克隆我的点文件并将它们放在适当的位置,其中添加了 RVM 的路径。我希望通过在我的 bash 安装脚本中获取 RVM 脚本,我可以在不接触 .bashrc 的情况下过关,但也许我需要重新考虑如何去做。
    • 您可以尝试 export rvm 例如:export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/sbin:/usr/sbin[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # 加载 RVM 函数
    【解决方案2】:

    如果你在 RVM 之后查看 .bashrc,他们有:

    export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
    

    我会为清洁做些什么

    gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
    curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrew
    
    if [[ -s "$HOME/.rvm/scripts/rvm" ]]; then
      . "$HOME/.rvm/scripts/rvm"
    else
      echo "$HOME/.rvm/scripts/rvm" could not be found.
      exit 1
    fi
    
    export PATH="$PATH:$HOME/.rvm/bin"
    rvm use 2.1.1 --default --install
    for i in jekyll tmuxinator scss-lint; do gem install $i; done
    

    【讨论】:

      【解决方案3】:

      我在阅读另一个stack overflow post后找到了解决方案。

      对其中一个答案的评论建议确保脚本使用 bash 而不是 sh 运行。那是我的问题。将脚本的第一行(未包含在我的示例中)从 #!/bin/sh 更改为 #!/usr/bin/env bash 后,一切正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多