私が正しい場合、プロセス環境は文字列の配列です。文字列は通常「name = value」という形式を持ちますが、必ずしもそうではありません。 「名前=値」の形式ではない文字列の目的は何ですか?ありがとうございます。
答え1
私はそれを含まない実際の使用や期待を知りません=
。これは一般的に病理学的なケースです。
GNUはenv
おそらくprintenv
それらを忠実に印刷します。
一部の言語では、これらの文字列は使用できません。たとえば、env文字列をperl
使用して呼び出すと、foo
その文字列は表示されませんが、keys(%ENV)
実行しperl
ているコマンドには引き続き渡されます(ハッシュ全体%ENV
をリセットしない限り)。
したがって、これを使用していくつかの環境クリーンアップをバイパスすることができます(もちろん、適切な環境クリーンアップは空の環境で開始する必要があります)。
一部のツール(たとえば、一部のシェル)は、受信環境でそれらを削除して実行するコマンドに渡さないため、通常これに頼るのは良い考えではありません。
-less env文字列に加えて、=
他の病理学的ケースには、重複した変数名(Bothや渡されたなど)foo=good
を持つenv文字列が含まれており、これは脆弱性につながることがわかりました。foo=bad
envp
CVE-2016-2381)と=foo
(空の変数名; POSIX putenv()
/はgetenv()
この変数を設定/インポートできますがsetenv()
)などのenv文字列です。