Я нашел способ, используя compgen -A export
, чтобы получить список переменных среды:
blacklisted () {
case $1 in
PWD|OLDPWD|SHELL|STORAGE) return 0 ;;
*) return 1 ;;
esac
}
env_save () { # Assume "$STORAGE/#1.sh" is empty
local VAR
for VAR in $(compgen -A export); do
blacklisted $VAR || \
echo "export $VAR='${!VAR}'" >> "$STORAGE/$1.sh"
done
}
env_restore () {
local VAR
for VAR in $(compgen -A export); do
blacklisted $VAR || \
unset $VAR
done
source "$STORAGE/$1.sh"
}