comparison bin/simpleenv.sh @ 861:c3a87bd40482

simple environment
author Jeff Hammel <k0scist@gmail.com>
date Wed, 18 Apr 2018 10:31:25 -0700
parents
children
comparison
equal deleted inserted replaced
860:af998083be84 861:c3a87bd40482
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 }