質問: c言語のsystem関数でコマンドのエイリアス c言語のsystem関数でエイリアスを設定したコマンドを実行する方法、どなたかご存じないでしょうか。 例えばbashを使っているユーザであれば、ユーザのbash_profileの中に alias id='id -g username' と記載し、idコマンドを実施した際には必ずusernameさんのグループidを出力させるようにします。 この状態で、profileを読み込んでidコマンドを実行すると「500」等のidが出力されます。 これをcのソースの中にsystem関数として記載します。 勿論ユーザはbashのプロファイルを読み込んでいる状態でgccします。 ソースファイル名をtest.cとすると、test.cのmainは以下 int main(){ system("id"); return 0; } この状態でソースをgccして、実行ファイルを実行しても出力結果は先ほどのグループidのみではなく標準的なid,つまり uid=0(root) gid=0(root) 所属グループ=0(root),1(bin),2(daemon),3(sys) 以下省略 と出力されていしまいます。 やりたい事はエイリアスを設定したコマンドをcのsystem関数で使いたいのですが、どなたかやり方ご存知の方いらっしゃいますでしょうか。 使用しているosはlinuxです。 どうぞ宜しくお願い致します。
回答: system()により呼び出されたコマンドは実行中のプログラムとは別のシェルで動作するので、シェルで登録したエイリアスや環境変数は使えない前提で使うものです。 参考url:http://linuxjm.sourceforge.jp/html/ldp_man-pages/man3/system.3.html