Це bash-код, який слід запустити. Отже, спочатку він замінює користувача на openproject і запускає весь код:
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
Я спробував увімкнути вищезазначений сценарій у цей:
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"
але це не працює належним чином і при кожному кроці запитує пароль. Як можна вдосконалити перекладений сценарій, щоб він працював?
ОНОВЛЕННЯ 1:
Після отримання судження про це я перебуваю в пункті, коли код був змінений на:
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
Вихід нормальний, поки рядок, який вказано так, у код. Звідти я отримую 4 помилки
sudo: bundle: команда не знайдена
ОНОВЛЕННЯ 2:
Спробувавши пропозицію від Дмитра Василянова, я виявив, що якщо я вставляю -i, він буде імітувати як логін користувача. Однак це не останній спосіб зробити це.
Якщо я запускаю echo $PATH
після входу в систему як відкритий проект, вихід є/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/home/openproject/.rvm/bin
Якщо я запускаю echo $PATH
після su openproject -c "bash -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
, оскільки це вбудована оболонка.
sudo
використовується для запуску як іншого користувача, тому що root
за замовчуванням, якщо нічого не вказано, ви можете ідеально виконати sudo -u openproject bundle install
.
bundle: command not found
помилку , тому що ви встановили PATH
або GEM_PATH
в вашому .bash_profile
або .bashrc
вони не виконуються без входу / неінтерактивний оболонок, тому вам потрібно пройти , -i
щоб sudo
для імітації входу в систему , як це:sudo -iu openproject bundle install
sudo
, ніsu
.