2012-02-22 13 views
4

スタートアップスクリプト(rc.local)でroot以外のユーザーとしてコマンドを実行したいとします。実行したいコマンドは、実際にはroot以外のユーザーの.bash_profileのエイリアスです。私は使用しようとしました現在のユーザーの代わりに.bash_profileを使用して別のユーザーとしてコマンドを実行するにはどうすればよいですか?

su - myuser -c aliased_cmd 

これは動作しません。

su - myuser 
# wait for login... 
aliased_cmd 

と入力しても問題ありませんが、実際のスクリプトでは適切ではありません。もちろん、実際のrc.localファイルに使用したいエイリアスや機能をコピーすることもできますが、これはちょっとばかげているようです...おそらく私が知らないオプションやsudoを使う方法がありますこの?

+0

aliasコマンドを実行する前に、「ソース/path-to-non-root-user-home-dir/.bash_profile」を実行しようとしたがありますか? – hovanessyan

+0

これは良いアイデアでしたが、実際にはこれがうまくいかないという事実が何とか問題を起こすかもしれません。 su - myuser -c "source .bash_profile; aliased_cmd" – Jesse

+0

'--preserve-environment'または' su -c 'echo "$ SHELL"' myuser'を試したことがありますか?コマンドがBashシェルで実行されていない可能性があります。 – l0b0

答えて

2

プロファイルを調達した後、以下を含む

shopt -s expand_aliases 
+1

この行を.bash_profileに追加するだけで、トリック、ありがとう! – Jesse

0

man suを引用:

をする場合 - 使用されている、それは最後のSUオプションとして指定する必要があります。

最後のオプションでない場合はどうなるのですか。また、概要では、ユーザー名はのすべてのオプションの後です。

su -c aliased_cmd - myuserまたはsu -l -c aliased_cmd myuserを試しましたか?

+0

これらの形式のどちらも動作しません。 – Jesse

関連する問題