setтакже отображает функции и системные переменные, такие как BASH_VERSION
Гленн Джекман
Ваш вопрос неясен. Это отрывок из setвывода, который вы показываете? Если так, то это не так bash. Вы хотите экспортировать все установленные в данный момент переменные, включая специальные переменные оболочки? Или только те 3 переменные, как в export a b c?
Стефан Шазелас
export ${!T*}экспортирует любой определенный параметр, имя которого начинается с T. К сожалению, кажется, нет способа легко сгенерировать список всех определенных параметров.
chepner
Ответы:
72
Выполните следующую команду перед установкой переменных:
set-a
справочная страница:
-a
Когда эта опция включена, атрибут экспорта должен быть установлен для каждой переменной, которой выполняется присвоение;
Теперь нам нужно экспортировать эти переменные, но xargs не может этого сделать, потому что он разветвляет дочерний процесс, экспорт должен выполняться под текущим процессом. echo "export" ...создайте команду, которую мы хотим, затем используйте `` для ее запуска. Вот и все: с.
Добро пожаловать в U & L SE. Может быть, вы можете отредактировать свой пост и дать некоторые объяснения.
Архемар
1
Неправильно полагать, что имена переменных среды будут состоять только из аз и аз. Они обычно включают в себя подчеркивания и цифры, так что шаблон будет [a-zA-Z_][a-zA-Z0-9_]*. Существуют некоторые варианты в зависимости от используемой вами оболочки, но это безопасный / переносимый подход.
Крис Джонсон
Хороший вопрос @ChrisJohnson - обновлено!
Уил Мур III
3
Вы можете добавить exportимя переменной через awkи evalк полученному результату:
printenvпечатает переменные, которые уже экспортированы. Это также не будет работать должным образом, если есть переменные, содержащие символы новой строки.
Стефан
2
Это работает, если ваша оболочка bash (возможно, и другие оболочки)
export >/my/env/var/file
Ваш новый файл будет содержать дамп всех определенных на данный момент переменных ... с такими записями, как
set
также отображает функции и системные переменные, такие как BASH_VERSIONset
вывода, который вы показываете? Если так, то это не такbash
. Вы хотите экспортировать все установленные в данный момент переменные, включая специальные переменные оболочки? Или только те 3 переменные, как вexport a b c
?export ${!T*}
экспортирует любой определенный параметр, имя которого начинается сT
. К сожалению, кажется, нет способа легко сгенерировать список всех определенных параметров.Ответы:
Выполните следующую команду перед установкой переменных:
справочная страница:
Чтобы отключить эту опцию, запустите
set +a
потом.Пример:
Где
environment
содержится:источник
function example(){ echo good; }; export -f example
Сначала получите все установленные переменные окружения
(set -o posix ; set)
: https://superuser.com/questions/420295/how-do-i-see-a-list-of-all-currently-defined-environment-variables-in-a- линукс-баПолучить все имена переменных среды, разделенные пробелом:
awk -F "=" 'BEGIN{ORS=" "}1 $1~/[a-zA-Z_][a-zA-Z0-9_]*/ {print $1}'
Ссылка: значение столбца awk-Printing без новой строки и добавление запятой и https://stackoverflow.com/questions/14212993/regular-expression-to-match-a-pattern-inside- AWK-командаТеперь нам нужно экспортировать эти переменные, но xargs не может этого сделать, потому что он разветвляет дочерний процесс, экспорт должен выполняться под текущим процессом.
echo "export" ...
создайте команду, которую мы хотим, затем используйте `` для ее запуска. Вот и все: с.источник
[a-zA-Z_][a-zA-Z0-9_]*
. Существуют некоторые варианты в зависимости от используемой вами оболочки, но это безопасный / переносимый подход.Вы можете добавить
export
имя переменной черезawk
иeval
к полученному результату:источник
printenv
печатает переменные, которые уже экспортированы. Это также не будет работать должным образом, если есть переменные, содержащие символы новой строки.Это работает, если ваша оболочка bash (возможно, и другие оболочки)
Ваш новый файл будет содержать дамп всех определенных на данный момент переменных ... с такими записями, как
затем поднять текущую оболочку со всеми этими проблемами env vars
источник