В каком порядке GNU env печатает переменные среды?

Когда вызывается без аргументов, env а также printenv Команды из GNU Coreutils выводят значение каждой переменной среды. Что определяет порядок, в котором эти переменные печатаются? Это не алфавитный порядок и не порядок, в котором были установлены переменные.

1 ответ

У каждого процесса есть список строк, которые он поддерживает в качестве своего окружения. Когда вы добавляете, изменяете или удаляете элементы из этого списка, библиотека времени выполнения должна обновить соответствующий массив. Поскольку не существует стандартного требования для поддержания этого в отсортированной форме, среда выполнения использует то, что разработчики решили, что это самый быстрый способ обновления списка. Производительность - вот что определяет порядок.

Для получения дополнительной информации, конечно, исходный кодenv доступен для осмотра. Он печатает среду в том порядке, в котором массив environ использует.

Другие вопросы по тегам