【发布时间】:2011-12-06 13:26:19
【问题描述】:
如何在 Capistrano 运行命令中设置 shell 以使用 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 gem 中看到 command.rb 文件有一些类似
的代码shell = "#{options[:shell] || "sh"} -c"
但我不清楚如何将options[:shell] 传递给任务
【问题讨论】:
-
看起来它正在通过
sh -cbash 执行bash...``。怎么不符合你的要求? (免责声明:我对 Capistrano 一无所知。)
标签: bash rvm capistrano