Я пытаюсь установить ruby 1.9.2 из сценария ruby, используя rvm, который устанавливается из этого же сценария.У меня проблема с поиском .bashrc внутри скрипта, чтобы в скрипте был доступен путь к rvm.Следующие работы:
#!/usr/bin/env ruby
%x[bash -c "bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)" ]
%x[ln -s /usr/local/rvm/ .rvm]
%x[echo "[[ -s \"$HOME/.rvm/scripts/rvm\" ]] && source \"$HOME/.rvm/scripts/rvm\"" >> ~/.bashrc]
Но я не могу выполнить из этого сценария ruby
source .bashrc
Я пробовал
%x[bash -c "bash <(. .bashrc)"]
Я имеютакже попытался запустить отдельно строку, добавленную сценарием в .bashrc
%x[ bash -c "bash <(source \"$HOME/.rvm/scripts/rvm\" )" ]
Я пробовал сеансы, но приведенные ниже команды дают пустой ответ на "which rvm".
require 'rubygems'
require 'session'
bash = Session::Bash.new
stdout, stderr = bash.execute 'source .bashrc'
puts "which rvm = " + %x[which rvm 2>&1].inspect
AmЯ смотрю на это все неправильно?Возможно ли попытаться получить исходный код .bashrc в сценарии ruby и использовать полученную среду для выполнения последующих команд?
Обновление -
Используя приведенный ниже подход Яна с bash -ic, я смог заставить работать скрипт ruby.Но все последующие команды оболочки, которые должны видеть новую среду, также должны запускаться с помощью bash -ic.Вот рабочий скрипт:
#!/usr/bin/env ruby
%x[bash -c "bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)" ]
%x[ln -s /usr/local/rvm/ .rvm]
%x[echo "[[ -s \"$HOME/.rvm/scripts/rvm\" ]] && source \"$HOME/.rvm/scripts/rvm\"" >> ~/.bashrc]
%x[bash -ic "bash <(. ~/.bashrc); rvm install ruby-1.9.2-p290; rvm 1.9.2-p290 --default;"]