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

623
Psychonaut

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

2

1 ответ на вопрос

4
Thomas Dickey

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

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

Похожие вопросы