Как/где оболочка хранит переменные окружения?

Возможное незначительное улучшение { {1}} за ваше улучшение до ответа Steeldriver :

awk -vRS=">" -vOFS="" '$1=="genus_1_species_1" {$1=""; print length;}' species_gene

-vRS = ">" эквивалентно BEGIN {RS = " > "} , и аналогично с -vOFS =" ". Мой вклад состоит в том, что эта версия позволяет вам указывать заголовок записи, длина которой, , чтобы вам не приходилось подсчитывать записи.

2
13.08.2017, 21:12
2 ответа

См. man 7 environ. Когда ваша оболочка запускает другой процесс — любой разновидностью exec(3) — этот процесс наследует среду своего предшественника. Одним из удобных вариантов для вашей оболочки может быть хранение двух списков: экспортируемых и неэкспортируемых переменных оболочки.Экспортированные файлы могут поддерживаться в собственной среде оболочки с помощью putenv(3) и автоматически наследоваться любыми процессами, создаваемыми вашей оболочкой. Те, которые не экспортируются, могут быть в отдельном списке, доступном только для оболочки.

Если вас интересуют такие вещи, вы можете найти The Linux Programming InterfaceМайкла Керриска как полезный справочник.

2
27.01.2020, 21:53

Оболочка может хранить переменные среды любым удобным для нее способом. Это не совсем актуально. Важно то, что оболочка должна иметь возможность передать среду дочернему процессу (, включая printenv), посредством системного вызова execve.

4
27.01.2020, 21:53

Теги

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