Где хранятся переменные оболочки?

По какой-то причине у этого модема была ссылка на eth1 , поэтому мне удалось заставить его работать с помощью следующих команд:

# ifconfig eth0 down
# ifconfig eth1 up
# dhcpcd
1
24.05.2016, 01:05
3 ответа

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

Разница между переменными оболочки и переменными среды заключается в том, что переменные среды помещаются в среду подпроцессов. Все переменные среды являются переменными оболочки. Естественный способ их хранения - создать хеш-таблицу, которая отображает имена переменных не в значение, а в структуру, содержащую значение и некоторые флаги (экспортируемые, только для чтения,…).

1
27.01.2020, 23:14

Это переменная только на время выполнения программы. Другой способ подумать об этом - переписать вашу программу следующим образом.

#!/bin/bash
b=1
echo $b
exit

Теперь представьте, что вы делаете это в терминале, а затем выходите из терминальной сессии. Открытие другого терминального сеанса не покажет вам ничего относительно того b=1 присвоения в предыдущем сеансе.

Это называется "локальная переменная", в отличие от "глобальной переменной". Они отображаются, наряду со многими другими функциями, с помощью set.

Итак, если вы хотите увидеть назначение, сделайте

set |grep '^b='

b=1

Пожалуйста, обратитесь к The Linux Documentation Project за дополнительной информацией.

2
27.01.2020, 23:14

Оболочка, запускаемая при входе в систему для чтения ваших команд и их выполнения, сохраняет все переменные. Если вы запустите вторую оболочку, у нее будет собственный набор переменных. Вы можете запустить команду set , чтобы увидеть список переменных. Команда set выполняется внутри оболочки вместо запуска нового процесса.

Переменные среды либо хранятся в отдельном пространстве, либо помечаются как таковые (если это имеет значение, прочтите исходный код оболочки), поэтому они передаются программам, запускаемым оболочкой.

Мне кажется разумным использование двух хэш-таблиц.

3
27.01.2020, 23:14

Теги

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