- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語のsystem関数でコマンドのエイリアス)
C言語のsystem関数でコマンドのエイリアスを設定する方法
このQ&Aのポイント
- C言語のsystem関数を使用して、コマンドのエイリアスを設定する方法について教えてください。
- C言語のsystem関数でエイリアスを設定したコマンドを実行する方法について知りたいです。
- C言語のsystem関数を使って、bashのエイリアスを適用したコマンドを実行したいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
system()により呼び出されたコマンドは実行中のプログラムとは別のシェルで動作するので、シェルで登録したエイリアスや環境変数は使えない前提で使うものです。
その他の回答 (2)
- ky072
- ベストアンサー率60% (85/140)
回答No.3
こんな感じでいかがでしょう。 system( "/bin/bash -i -c id" ); 他のシェルを使用しているユーザーにも対応する必要があれば、 getpw(3) で pw_shell を見てやる必要があります。 ちなみに -i のようなオプションが全シェルで共通とは限りません。
- Tacosan
- ベストアンサー率23% (3656/15482)
回答No.2
それはたぶんずれてる>#1. #1 で挙がっている system(3) にあるように, 「/bin/sh を実行するから」でしょう. Linux の場合 sh は bash の (シンボリックまたはハード) リンクになっていると思うので, bash(1) を見れば原因がわかるはずです (最悪 bash のドキュメントを読めばいい).