引数なしで呼び出されると、GNU Coreutils の コマンドenv
とprintenv
コマンドはすべての環境変数の値を出力します。これらの変数が出力される順序は何によって決まりますか? アルファベット順でも、変数が設定された順序でもありません。
答え1
各プロセスは、環境として維持する文字列のリストを持っています。このリストに項目を追加、変更、または削除すると、ランタイムライブラリは対応する配列を更新する必要があります。ソートされた形式で維持するための標準的な要件がないため、ランタイムは開発者がリストを更新する最も速い方法であると判断したものを使用します。パフォーマンスの考慮事項は、決定するオーダー。
さらに詳しい情報については、ソースコードenv
検査可能です。配列が使用する順序で環境を出力しますenviron
。