Đây là mã bash nên được chạy. Vì vậy, trước tiên, nó thay thế người dùng thành openproject và chạy tất cả mã
su openproject -c "bash -l"
cd ~/openproject
git checkout Gemfile.lock
git pull
bundle install
RAILS_ENV="production" bundle exec rake db:migrate
RAILS_ENV="production" bundle exec rake db:seed
RAILS_ENV="production" bundle exec rake assets:precompile
Tôi đã cố gắng viết kịch bản trên vào đây:
su - openproject -c "cd ~openproject/openproject"
su - openproject -c "git checkout stable"
su - openproject -c "git checkout Gemfile.lock"
su - openproject -c "git pull"
su - openproject -c "bundle install"
su - openproject -c "RAILS_ENV="production" bundle exec rake db:migrate"
su - openproject -c "RAILS_ENV="production" bundle exec rake db:seed"
su - openproject -c "RAILS_ENV="production" bundle exec rake assets:precompile"
nhưng điều này không chạy đúng và ở mỗi bước yêu cầu mật khẩu. Làm thế nào kịch bản dịch có thể được cải thiện để nó hoạt động?
CẬP NHẬT 1:
Sau khi nhận được các thông tin về điều này, tôi là điểm mà mã đã được sửa đổi thành:
cd ~openproject/openproject
sudo -u openproject git checkout stable
sudo -u openproject git checkout Gemfile.lock
sudo -u openproject git pull
# the output is good thill here
sudo -u openproject bundle install
sudo -u openproject RAILS_ENV="production" bundle exec rake db:migrate
sudo -u openproject RAILS_ENV="production" bundle exec rake db:seed
sudo -u openproject RAILS_ENV="production" bundle exec rake assets:precompile
Đầu ra là ok cho đến khi dòng trạng thái vào mã. Từ đó tôi nhận được 4 lỗi.
sudo: bundle: lệnh không tìm thấy
CẬP NHẬT 2:
Sau khi thử gợi ý từ Dmitry Vasilyanov, tôi thấy rằng nếu tôi chèn -i, nó sẽ mô phỏng như đăng nhập của người dùng. Tuy nhiên đây không phải là cách cuối cùng để làm điều đó.
Nếu tôi chạy echo $PATH
sau khi đăng nhập như openproject thì ouput là/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/openproject/.rvm/bin
Nếu tôi chạy echo $PATH
sau khi su openproject -c "bash -l"
đầu ra là/home/openproject/.rvm/gems/ruby-2.1.0/bin:/home/openproject/.rvm/gems/ruby-2.1.0@global/bin:/home/openproject/.rvm/rubies/ruby-2.1.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/openproject/.rvm/bin
cd
, vì nó là một vỏ được tích hợp sẵn.
sudo
được sử dụng để chạy như một người dùng khác, là root
mặc định nếu không có gì được chỉ định, bạn hoàn toàn có thể thực thi sudo -u openproject bundle install
.
bundle: command not found
lỗi vì bạn thiết lập PATH
hoặc GEM_PATH
trong bạn .bash_profile
hay .bashrc
, họ không được thực hiện trong vỏ phi đăng nhập / không tương tác, vì vậy bạn cần phải vượt qua -i
để sudo
đến đăng nhập mô phỏng, như thế này:sudo -iu openproject bundle install
sudo
, không phảisu
.