Использование rvm в скрипте bash на CentOS 6.2

Использование rvm в скрипте bash на CentOS 6.2

Я пытаюсь написать скрипт, который проходит все шаги по установке и настройке сервера graylog2 и веб-интерфейса на CentOS 6.2. Вот раздел, с которым у меня возникли проблемы:

curl -L get.rvm.io | bash -s stable
# Load RVM into a shell session *as a function*
if [[ -s "$HOME/.rvm/scripts/rvm" ]] ; then

  # First try to load from a user install
  source "$HOME/.rvm/scripts/rvm"

elif [[ -s "/usr/local/rvm/scripts/rvm" ]] ; then

  # Then try to load from a root install
  source "/usr/local/rvm/scripts/rvm"

else

  printf "ERROR: An RVM installation was not found.\n"

fi

rvm install 1.9.3 --create
rvm use 1.9.3 --default

Поэтому, когда он пытается загрузить функцию rvm в оболочку как функцию, это не сработает, из-за чего ruby ​​не будет установлен. Я пробовал другие методы загрузки функции в оболочку, как показано ниже:

Ручное получение файла скриптов из корневой установки

source /usr/local/rvm/scripts/rvm

Добавление переменной среды PATH вручную для включения rvm:

PATH=$PATH:/usr/local/rvm/bin
export PATH

Ручной вызов пути к команде rvm

/usr/local/rvm/bin/rvm install 1.9.3 --create

Источник /etc/profile.d/rvm.sh

source /etc/profile.d/rvm.sh

Обратите внимание, что если я закрою оболочку и снова войду в систему, rvm загрузится нормально, но мне нужно иметь возможность делать все это из этого скрипта без необходимости выходить из системы и снова входить в систему. Я также делаю это как root. Вы можете посмотреть на написанный мной скрипт целикомздесь.

Любая помощь будет оценена по достоинству.

РЕДАКТИРОВАТЬ

После добавления set -xв скрипт, вот вывод при попытке загрузить функцию:

+ [[ -s /root/.rvm/scripts/rvm ]]
+ [[ -s /usr/local/rvm/scripts/rvm ]]
+ source /usr/local/rvm/scripts/rvm
++ [[ :braceexpand:hashall:interactive-comments:posix:xtrace: =~ :posix: ]]
++ return 0
+ rvm install 1.9.3 --create
./rvm_test.sh: line 27: rvm: command not found
+ rvm use 1.9.3 --default
./rvm_test.sh: line 28: rvm: command not found

ПРАВКА 2

Я заглянул в файл /usr/local/rvm/scripts/rvm и нашел это в самом начале:

# Do not allow sourcing RVM in `sh` - it's not supported
# return 0 to exit from sourcing this script without breaking sh
[[ ":$SHELLOPTS:" =~ ":posix:" ]] && return 0 || true

Так что я думаю, что это вызывает мою проблему, но я не уверен. У меня нет опыта в написании скриптов на bash :\ Так что проблема, как я предполагаю, в том, что моя оболочка не поддерживается(?) может кто-нибудь прояснить?

решение1

Отвечаю на свой собственный вопрос хаха

Просто переключаю первую строку

#!/bin/sh

к

#!/bin/bash

в моем скрипте исправляет проблему, с которой я столкнулся. Я выяснил, что скрипт, который пытался быть исходным, не поддерживает sh.

Связанный контент