Как настроить оболочку на bash для запуска в Capistrano? - PullRequest
15 голосов
/ 13 октября 2011

Как настроить оболочку в команде запуска Capistrano на использование bash вместо sh?Я пытаюсь установить RVM, и мне нужно выполнить команду:

run "bash < <(curl -L http://bit.ly/rvm-install-system-wide)"

как в:

task :install_rvm, :roles => :server do
  apps = %w(bison openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev     libyaml-dev sqlite3 libsqlite3-0 libxml2-dev libxslt-dev autoconf subversion libcurl4-openssl-dev)
  apt.install( {:base => apps}, :stable )
  run "bash < <(curl -L http://bit.ly/rvm-install-system-wide)"
  run "rvm install 1.9.2".sh
  run "rvm use 1.9.2@global"
  run "gem install awesome_print map_by_method wirble bundler builder pg cheat"
  run "gem install -v2.1.2 builder"
  # modify .bashrc
end

Но я просто не могу заставить его работать, потому что Capistranoвыполняя:

"sh -c 'bash < <(curl -L http://bit.ly/rvm-install-system-wide)'" on ubuntu@ec2...

В геме Capistrano я вижу, что файл command.rb содержит код вроде

shell = "#{options[:shell] || "sh"} -c"

, но мне неясно, как передать options[:shell] в задачу

Ответы [ 4 ]

34 голосов
/ 25 ноября 2011

установлено: оболочка не работает, но работает:

default_run_options[:shell] = '/bin/bash'

8 голосов
/ 06 марта 2013

Похоже, вам нужен камень rvm-capistrano .Другой вариант - использовать механизм, используемый rvm-capistrano, а именно:

set :default_shell, '/bin/bash -l'
1 голос
/ 21 октября 2011

Попробуйте установить переменную :shell.

set :shell, '/usr/bin/bash'
0 голосов
/ 01 апреля 2014

Вы также можете использовать следующий синтаксис:

run "bash -c <command>"

Это особенно полезно для установки окружения с ключом --login, например:

run "bash --login -c rvm use 1.9.2

... и это также работает в Capistrano 3.x ...!

...