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