export $(ksh -c env | tr '\n' ' ')
у меня не работает, потому что "env" возвращает текст вроде:
key1=value1 value2
...
Так что приведенная выше команда расширит $ (ksh -c env | tr '\ n' '') иrun:
export key1=value1 value2
Но это приводит к ошибке:
export: value2: is not an identifier
Обратите внимание, что могут быть другие плохие символы справа от знака "=" в выводе "env",что приведет к ошибкам.
Но есть лучший способ экспортировать среду:
export -p > myenv.sh
это выводит в Bash
declare -x key1="value1 value2"
....
Похоже, что Bash "объявляет -х "совпадает с" экспорт ".Но в ksh "export -p" печатает
export key1='value1 value2'
...
Теперь мне просто нужно запустить
source myenv.sh
, чтобы экспортировать все переменные
Но мне также нужно удалить всесуществующие переменные перед экспортом новых.Я нашел решение по адресу: http://www.linuxquestions.org/questions/linux-newbie-8/how-to-unset-environment-variable-in-bash-383066/
Итак, мой окончательный код:
unset `env | awk -F= '/^\w/ {print $1}' | xargs`
source myenv.sh