Ini adalah kode bash yang harus dijalankan. Jadi pertama-tama ia menggantikan pengguna untuk membuka proyek dan menjalankan semua kode:
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
Saya telah mencoba mengubah skrip di atas menjadi ini:
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"
tetapi ini tidak berjalan dengan baik dan pada setiap langkah meminta kata sandi. Bagaimana skrip yang diterjemahkan ditingkatkan sehingga berfungsi?
PEMBARUAN 1:
Setelah menerima saran tentang ini, saya adalah titik di mana kode telah diubah menjadi:
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
Outputnya ok sampai baris yang menyatakan begitu ke dalam kode. Dari sana saya mendapatkan 4 kesalahan
sudo: bundle: perintah tidak ditemukan
PEMBARUAN 2:
Setelah mencoba saran dari Dmitry Vasilyanov saya menemukan bahwa jika saya memasukkan -i itu akan disimulasikan sebagai login pengguna. Namun ini bukan cara terakhir untuk melakukannya.
Jika saya menjalankan echo $PATH
setelah masuk sebagai openproject ouput adalah/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/openproject/.rvm/bin
Jika saya menjalankan echo $PATH
setelah su openproject -c "bash -l"
output/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
, karena itu adalah shell builtin.
sudo
digunakan untuk dijalankan sebagai pengguna lain, sebagai root
default jika tidak ada yang ditentukan, Anda dapat menjalankannya dengan sempurna sudo -u openproject bundle install
.
bundle: command not found
kesalahan karena Anda menetapkan PATH
atau GEM_PATH
di Anda .bash_profile
atau .bashrc
, mereka tidak dieksekusi di non-login / non-interaktif kerang, sehingga Anda harus lulus -i
untuk sudo
ke masuk simulasi, seperti ini:sudo -iu openproject bundle install
sudo
, tidaksu
.