
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です。
どうぞ宜しくお願い致します。
No.1ベストアンサー
- 回答日時:
system()により呼び出されたコマンドは実行中のプログラムとは別のシェルで動作するので、シェルで登録したエイリアスや環境変数は使えない前提で使うものです。
参考URL:http://linuxjm.sourceforge.jp/html/LDP_man-pages …
No.3
- 回答日時:
こんな感じでいかがでしょう。
system( "/bin/bash -i -c id" );
他のシェルを使用しているユーザーにも対応する必要があれば、
getpw(3) で pw_shell を見てやる必要があります。
ちなみに -i のようなオプションが全シェルで共通とは限りません。
No.2
- 回答日時:
それはたぶんずれてる>#1.
#1 で挙がっている system(3) にあるように, 「/bin/sh を実行するから」でしょう. Linux の場合 sh は bash の (シンボリックまたはハード) リンクになっていると思うので, bash(1) を見れば原因がわかるはずです (最悪 bash のドキュメントを読めばいい).
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
フォルダ、ファイル操作に最適...
-
make test って何をするための...
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイルでのMACアドレス...
-
コマンドプロンプトをクリック...
-
シェルスクリプト(.sh)で、10進...
-
DOSコマンドに詳しい方、お知恵...
-
シェルの「:コマンドが見つか...
-
コードからアクセス権限の変更
-
FTPの連続実行でフリーズする
-
findstrでヒットした1行前の文...
-
バッチファイルを使ってテキス...
-
CPRMでコピーしたDVDを再コピー...
-
sed について GNU sed 4.1.2 と...
-
FTP送信エラーの検知について
-
Pythonで単純にファイルを結合...
-
ショートカットをデスクトップ...
-
Windowsのバッチ(bat)ファイル...
-
プログラムで得られたdataをfil...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
バッチ終了時にDOS窓を閉じるコ...
-
コマンドプロンプトをクリック...
-
make test って何をするための...
-
findstrでヒットした1行前の文...
-
AccessVBAで実行時間を指定する...
-
SSH接続でwindowsサーバのコマ...
-
DOSコマンドに詳しい方、お知恵...
-
シェルの「:コマンドが見つか...
-
ショートカットをデスクトップ...
-
フォルダ、ファイル操作に最適...
-
ftpコマンドを実行すると「425 ...
-
ftpコマンド出力結果の取得
-
バッチファイルでのMACアドレス...
-
DOSコマンドで指定日数よりも過...
-
2つ目の「pause」は無効?
-
バッチファイルでdiskpart.exe...
-
バッチえファイルを編集するに...
-
シェルスクリプト内のcdで、カ...
-
Pythonで単純にファイルを結合...
おすすめ情報