には特殊文字がないためsetenv X1 /p/fsd
、
system("setenv X1 /p/fsd")
と同等です
system("setenv", "X1", "/p/fsd")
。という名前のプログラムがないため、失敗していsetenv
ます。この最適化が存在しなかった場合は、別の結果が得られます*。その場合、
system("setenv X1 /p/fsd")
と同等になります
system("sh", "-c", "setenv X1 /p/fsd")
コマンドsh
がないので、それも機能しません。setenv
したがって、代わりに次を実行できます。
system("tcsh", "-c", "setenv X1 /p/fsd")
しかし、それは無意味でしょう。シェルを作成し、その変数の1つを設定します。その後、シェルが終了し、その変数は存在しなくなります。
Perlとその子に見られるenv変数を設定したい場合は、単に
$ENV{X1} = "/p/fsd"; # Until end of program
また
local $ENV{X1} = "/p/fsd"; # Until end of scope
* —最適化されたコードは、最適化されていないコードと同じように動作する必要がありますが、最適化によって発生するエラーが変わるだけなので、許容範囲内です。