Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > dump переменных bash созданных в текущей сессии


Автор: boostcoder 24.7.2011, 01:55
подскажите, каким образом получить список переменных созданных в текущей сессии.
при помощи printenv получаю все переменные, даже те что не_мной/не_моим_скриптом созданы.

спасибо.

Автор: VirtualVoid 24.7.2011, 20:30
Возможно, подойдет такой способ:

В файл ~/.bashrc добавить строку:
Код

env > $HOME/.envinit


А само сравнение список переменных, созданных в текущей сессии, можно выводить командой:
Код

env | diff --side-by-side --suppress-common-lines - ~/.envinit | sed -e 's/<$//'


У меня результат выглядит так:
Код

env | diff --side-by-side --suppress-common-lines - ~/.envinit | sed -e 's/<$//'
FOO=barr 
TESTENV1=blah_blah 
user@localhost:~>


Кстати, не сработает с несколькими терминалами. Можно их различать с помошью времени в секундах:
Код

env > $HOME/.envinit`date +%s`


Работать с несколькими будет в следующем варианте:
В файл  ~/.bashrc:
Код

env > $HOME/.envinit`tty | grep -oE "[[:digit:]]{1,}" | tr -d '\n'`


Команда вывода:
Код

env | diff --side-by-side --suppress-common-lines - ~/.envinit`tty | grep -oE "[[:digit:]]{1,}" | tr -d '\n'` | sed -e 's/<$//'


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

Автор: boostcoder 29.7.2011, 19:46
VirtualVoid, то что нужно.
сильно благодарен smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)