通过单个 shell 脚本在 OSX 上安装 RVM 和 gem

Installing RVM and gems on OSX from a single shell script

我正在尝试从一个 bash 脚本安装 RVM 和一些 gem,我用它来 bootstrap 一个新的开发框。我的目标是在 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 脚本解决方案有什么想法吗?

您可能需要将 "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

如果你在 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

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

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