Простой способ установки RVM состоит в том, чтобы следовать инструкциям на сайте разработчика (на самом деле сайт говорит «Пожалуйста, используйте только процесс установки с этого сайта, так как это только поддерживаемые типы и методы установки. "):
curl -L get.rvm.io | bash -s stable
Загрузить RVM:
source ~/.rvm/scripts/rvm
Найти требования (следуйте инструкциям):
rvm requirements
Установить ruby:
rvm install 1.9.3
В моей системе (12.04) все это происходило без заминок; перечисленные требования легко найти и установить с помощью apt-get.
Как уже упоминалось в @glennjackman, вы захотите процитировать подстановку команд, иначе расщепление слов и расширение пути изменят содержимое до его обхода. И хотя оба будут выполнять команды из файла, есть различия.
Когда вы запускаете скрипт, будут изменены различные специальные переменные оболочки, в основном массивы BASH_SOURCE, BASH_LINENO и FUNCNAME. Они полезны для печати сообщений об ошибках и отладки. Вы можете вернуться из сценария источника с помощью команды return (help return). С помощью eval вы не получите этого эффекта. И аналогично ловушка RETURN не будет срабатывать для eval. При поиске сценария вы можете передать ему аргументы. Вы не можете сделать это с этим eval. С помощью eval подстановка команды будет считывать все содержимое файла в память, прежде чем передавать его на eval. Когда вы его используете, bash будет читать из файла по мере его появления.Есть хорошее резюме того, что источник, eval и exec делают здесь: http://www.unix.com/shell-programming-scripting/54347-bash-shell-exec-eval-source-looking-help-understand .html
Я думаю, что ваше использование eval и source'ing файла будет делать то же самое. Однако я не совсем уверен, что переменные внутри индекса будут вести себя одинаково в любом случае. Я бы рекомендовал использовать источник, если это возможно, потому что это более простой способ сделать и сделать ваш код более читаемым.