環境文字列に「name = value」型がない場合はいつですか?

環境文字列に「name = value」型がない場合はいつですか?

私が正しい場合、プロセス環境は文字列の配列です。文字列は通常「name = value」という形式を持ちますが、必ずしもそうではありません。 「名前=値」の形式ではない文字列の目的は何ですか?ありがとうございます。

ベストアンサー1

私はそれを含まない実際の使用や期待を知りません=。これは一般的に病理学的なケースです。

GNUはenvおそらくprintenvそれらを忠実に印刷します。

一部の言語では、これらの文字列は使用できません。たとえば、env文字列をperl使用して呼び出すと、fooその文字列は表示されませんが、keys(%ENV)実行しperlているコマンドには引き続き渡されます(ハッシュ全体%ENVをリセットしない限り)。

したがって、これを使用していくつかの環境クリーンアップをバイパスすることができます(もちろん、適切な環境クリーンアップは空の環境で開始する必要があります)。

一部のツール(たとえば、一部のシェル)は、受信環境でそれらを削除して実行するコマンドに渡さないため、通常これに頼るのは良い考えではありません。

-less env文字列に加えて、=他の病理学的ケースには、重複した変数名(Bothや渡されたなど)foo=goodを持つenv文字列が含まれており、これは脆弱性につながることがわかりました。foo=badenvpCVE-2016-2381)と=foo(空の変数名; POSIX putenv()/はgetenv()この変数を設定/インポートできますがsetenv())などのenv文字列です。

おすすめ記事