Ответ 1
set: shell не работает, но работает:
default_run_options[:shell] = '/bin/bash'
Как я могу установить оболочку в команде запуска 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 [email protected]"
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 [email protected]
Я вижу в Capistrano gem файл command.rb имеет некоторый код, например
shell = "#{options[:shell] || "sh"} -c"
но мне непонятно, как передать options[:shell]
в задачу
set: shell не работает, но работает:
default_run_options[:shell] = '/bin/bash'
Похоже, вам нужен драгоценный камень rvm-capistrano. Другим вариантом будет использование механизма, используемого rvm-capistrano, то есть:
set :default_shell, '/bin/bash -l'
Попробуйте установить переменную :shell
.
set :shell, '/usr/bin/bash'
Вы также можете использовать следующий синтаксис:
run "bash -c <command>"
Это особенно полезно для настройки среды с помощью ключа -login, например:
run "bash --login -c rvm use 1.9.2
... и он также работает в Capistrano 3.x...!