Я пытаюсь написать скрипт, который проходит через все шаги по установке и настройке сервера 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
Sourcing /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-скриптами:\ Итак, проблема в том, что моя оболочка не поддерживается (?) кто-нибудь может уточнить?