他のユーザーとしてどのように実行しますか?

他のユーザーとしてどのように実行しますか?

これが実行されるべき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:バンドル:コマンドが見つかりません

アップデート2:

Dmitry Vasilyanovの提案を試した後、-iを挿入するとユーザーログインがシミュレートされることがわかりました。しかし、これが最終的なアプローチではありません。

echo $PATHopenprojectでログインして実行すると、出力は次のようになります。/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

ベストアンサー1

シェルスクリプトを作成して実行してみてはいかがでしょうか?

su - openproject -c "your_shell_script"

openprojectの前に - を参照してください。これにより、ユーザー環境変数の代わりにopenprojectの環境変数が設定されます。

おすすめ記事