| 861 | 1 # source it | 
|  | 2 | 
|  | 3 export_var() { | 
|  | 4     if [[ "$#" != "2" ]] | 
|  | 5     then | 
|  | 6         echo "Must be called with two arguments" | 
|  | 7         return 1 | 
|  | 8     fi | 
|  | 9     # https://serverfault.com/questions/7503/how-to-determine-if-a-bash-variable-is-empty/382740#382740 | 
|  | 10     local KEY=$1 | 
|  | 11     local VALUE="${!KEY}" | 
|  | 12     if [[ -n "${!KEY+set}" ]]; | 
|  | 13     then | 
|  | 14         _OLD_VARS+=( "${KEY}" ) | 
|  | 15         _OLD_VALS+=( "${VALUE}" ) | 
|  | 16     else | 
|  | 17         _OLD_UNSET+=( "${KEY}" ) | 
|  | 18     fi | 
|  | 19     export "${1}=${2}" | 
|  | 20 } | 
|  | 21 | 
|  | 22 export_var BROWSER firefox | 
|  | 23 | 
|  | 24 deactivate() { | 
|  | 25     local index=0 | 
|  | 26     for key in "${_OLD_VARS[@]}" | 
|  | 27     do | 
|  | 28         local value="${_OLD_VALS[$index]}" | 
|  | 29         export "$key=$value" | 
|  | 30         index=$((index+1)) | 
|  | 31     done | 
|  | 32     for var in "${_OLD_UNSET[@]}" | 
|  | 33     do | 
|  | 34         unset "${var}" | 
|  | 35     done | 
|  | 36     unset deactivate | 
|  | 37 } |