이것은 실행되어야하는 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 :
이것에 대한 sugestions를받은 후 코드가 다음과 같이 수정 된 시점입니다.
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 : 번들 : 명령을 찾을 수 없음
업데이트 2 :
Dmitry Vasilyanov의 제안을 시도한 후 -i를 삽입하면 사용자 로그인으로 시뮬레이션됩니다. 그러나 이것이 마지막 방법은 아닙니다.
echo $PATH
openproject로 로그인 한 후 실행 하면 출력은/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 할 수 없습니다 .
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
.