Це 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.