ユーザーを変更し、いくつかのrubyデーモンプロセスを起動する、私たちのupstartスクリプトに問題があります。
以前bash -c "do the business" -l someuserは、-lフラグを使用してログインをエミュレートすることを確認するだけでした。
これは今までうまく機能しており、ルビープロセスは次のエラーをスローしていました:require: no such file to load -- rubygems (LoadError)調査の結果、このエラーはスクリプトをrootユーザーとして実行した場合(つまり、私sudo suまたはupstartで実行した場合)にのみ発生することがわかりました。
最初にパスを手動で設定すると問題が解決するため、これはPATHの問題だと思います。
ユーザーを変更して環境全体をロードする方法はありますか?
私も試してみましたsu user -cとsudo。
テストを簡単にするために、私は「ルート化」(sudo su)して実行していますwhich bundle(バンドルはルビーです)。
ここに私が得るものがあります:
sudo -i -u webuser which bundle#=>出力なしsu -l webuser -c which bundle#=>出力なしsudo su - webuser -c which bundle#=>出力なし
しかし、sshはwebuserとして
which bundle#=> / opt / ruby / bin / bundle
それはどのような分布ですか?
—
artistoex
スクリプトは、ユーザーごとにインストールされたRubyモジュールに依存していますか?
—
キース
@artistoexそれはubuntuです:)
—
Daniel Upton
それが本当にPATHの問題であることを確認します(スクリプトの変数をダンプします)。そして、パスとを見て比較
—
artistoex 2012
/etc/profile ~/.bash_profile ~/.bash_loginして~/.profile。ログインシェルの場合、bashはこれらを指定された順序で評価します。
su - user -cか?