2011-10-12 29 views
15

Làm cách nào để đặt trình bao trong lệnh chạy Capistrano để sử dụng bash thay vì sh? Tôi cố gắng để cài đặt RVM và tôi cần phải thực hiện lệnh:Làm cách nào để đặt shell thành bash để chạy trong Capistrano?

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

như trong:

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 

Nhưng tôi chỉ dường như không thể có được nó để làm việc vì Capistrano đang thực hiện:

"sh -c 'bash < <(curl -L http://bit.ly/rvm-install-system-wide)'" on [email protected] 

tôi thấy trong viên ngọc Capistrano file command.rb có một số mã như

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

nhưng không rõ với tôi cách vượt qua options[:shell] đến công việc

+0

Dường như nó đang thực thi 'bash' qua' sh -c 'bash ...' '. Làm thế nào mà không đáp ứng yêu cầu của bạn? (Disclaimer: Tôi không biết gì về Capistrano.) –

Trả lời

1

Thử đặt biến số :shell.

set :shell, '/usr/bin/bash' 
+0

Điều này dường như không hoạt động trong Capistrano, chỉ có thể thay đổi shell bằng 'default_run_options'. –

33

bộ: vỏ không hoạt động, nhưng mà làm việc:

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

+7

Lưu ý rằng đối với rvm, bạn có thể cần '/ bin/bash --login' – nateware

+0

+1, tôi có thể hôn bạn ... –

8

Có vẻ như bạn cần rvm-capistrano đá quý. Một lựa chọn khác là sử dụng cơ chế sử dụng bởi RVM-capistrano, đó là:

set :default_shell, '/bin/bash -l' 
+0

tuyệt vời, đã giúp tôi rất nhiều trong hệ thống mục tiêu của CentOs để triển khai – Schubie

+1

. trên Ubuntu 14.04 LTS. Cám ơn rất nhiều! –

0

Bạn cũng có thể sử dụng cú pháp sau:

run "bash -c <command>" 

Nó đặc biệt hữu ích cho việc thiết lập môi trường với --login chuyển đổi, ví dụ:

run "bash --login -c rvm use 1.9.2 

... và nó cũng hoạt động trong Capistrano 3.x ...!

Các vấn đề liên quan