При вызове без аргументов команды env
и printenv
из GNU Coreutils печатают значение каждой переменной среды. Что определяет порядок, в котором печатаются эти переменные? Это не алфавитный порядок и не порядок, в котором переменные были заданы.
решение1
У каждого процесса есть список строк, которые он поддерживает в качестве своей среды. Когда вы добавляете, изменяете или удаляете элементы из этого списка, библиотека времени выполнения должна обновить соответствующий массив. Поскольку нет стандартного требования для поддержания этого в отсортированном виде, среда выполнения использует то, что разработчики посчитали самым быстрым способом обновления списка. Соображения производительности - вот чтоопределятьприказ.
Для получения более подробной информации, конечно,исходный кодenv
доступен для проверки. Он выводит среду в том порядке, в котором ее environ
использует массив.