という$FOO
名前の環境変数の値に展開される構文FOO
は、シェルの機能です。C では直接利用できません。
システムがwordexp()関数を提供している場合があります。この関数は、C で同様の機能を提供します。
"HOME"
ただし、固定名 (および)を持つ 2 つの環境変数を展開しているだけなので、ポータブル関数と少しの文字列処理"PATH"
を使用する方が理にかなっています。(またはの代わりにgetenv()
使用することを検討してください。)sprintf
snprintf
strcat
注: update を$PATH
プログラムの内部でのみ使用している場合は、ここで読むのをやめてください。
$PATH
プログラムの実行が終了した後、コマンド ラインで変更が可能になるとは思わないでください。実行中の C プログラムは、おそらく対話型シェルの子プロセスです。環境変数は子プロセスに継承されます。それらは親プロセスに伝播しません。
それがあなたがやろうとしていることである場合、プログラムに新しいPATH
値を標準出力に出力させてから、シェルにそれを評価させることができます:
PATH=`your-program`
または、1 つまたは複数の環境変数を設定するコマンドを出力できます。
eval `your-program`
$(your-program)
(bash では、と同様に使用できます`your-program`
。)