質問: suを使用して残りのbashスクリプトをそのユーザーとして実行するにはどうすればよいですか? ユーザー名とプロジェクトを連結した文字列を引数として取るスクリプトを作成しました。スクリプトはユーザー名に切り替え(su)、プロジェクト文字列に基づいて特定のディレクトリにcdすることになっています。私は基本的にやりたい:su $username; cd /home/$username/$project; svn update; 問題は、一度suを実行すると、そこに待機することです。実行のフローがユーザーへの切り替えに渡されているため、これは理にかなっています。いったん終了すると、残りの処理が実行されますが、期待どおりに機能しません。svnコマンドの前にsuを追加しましたが、コマンドは失敗しました(つまり、目的のディレクトリのsvnを更新しませんでした)。ユーザーが(特に)ユーザーを切り替えてsvnを起動できるようにするスクリプトを作成するにはどうすればよいですか?
回答: これは私のために働いた「プロビジョニング」を「スタートアップ」から分離しました。 # configure everything else ready to run config.vm.provision :shell, path: "provision.sh" config.vm.provision :shell, path: "start_env.sh", run: "always" その後、私のstart_env.shで#!/usr/bin/env bash echo "starting server env" #java -jar /usr/lib/node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-2.40.0.jar & #(cd /vagrant_projects/myproj && sudo -u vagrant -h sh -c "nohup npm install 0<&- &>/dev/null &;bower install 0<&- &>/dev/null &") cd /vagrant_projects/myproj nohup grunt connect:server:keepalive 0<&- &>/dev/null & nohup apimocker -c /vagrant_projects/myproj/mock_api_data/config.json 0<&- &>/dev/null &