これは、実行する必要がある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:
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
。