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