diff options
author | André Erdmann <dywi@mailerd.de> | 2013-09-06 12:18:59 +0200 |
---|---|---|
committer | André Erdmann <dywi@mailerd.de> | 2013-09-06 12:18:59 +0200 |
commit | 9f4d5cecf2de280506c0e96b94de56ea6a603ecb (patch) | |
tree | 148b90cd0a87f49c70b4d9b2bf787b0d6f4c4ad1 | |
parent | files/hooks/mux.sh: set $this (diff) | |
download | R_overlay-9f4d5cecf2de280506c0e96b94de56ea6a603ecb.tar.gz R_overlay-9f4d5cecf2de280506c0e96b94de56ea6a603ecb.tar.bz2 R_overlay-9f4d5cecf2de280506c0e96b94de56ea6a603ecb.zip |
files/hooks/mux: run hooks in a subshell
-rwxr-xr-x | files/hooks/mux.sh | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/files/hooks/mux.sh b/files/hooks/mux.sh index efda723..c78d9e8 100755 --- a/files/hooks/mux.sh +++ b/files/hooks/mux.sh @@ -30,28 +30,23 @@ for hookfile in \ ${FILESDIR}/hooks/?*.${ROVERLAY_PHASE} do if [ -f "${hookfile}" ]; then - #subshell? - #( . "${hookfile}"; ) || ... - - hookfile_name="${hookfile##*/}" - this="${hookfile_name#[0-9]*-}"; this="${this%.*}" - - if [ -n "${this}" ]; then - veinfo "Running hook ${this} ('${hookfile_name}')" - else - this="${hookfile_name}" - veinfo "Running hook '${hookfile_name}'" - fi - - # initial directory should always be $S - cd "${S}" && . "${hookfile}" || \ - die "errors occured while running hook '${hookfile}'" - - # restore signals - trap - INT TERM EXIT - - this="${SCRIPT_NAME}" - unset -v hookfile_name + # subshell: don't leak hook vars/functions + ( + readonly hookfile_name="${hookfile##*/}" + this="${hookfile_name#[0-9]*-}"; this="${this%.*}" + + if [ -n "${this}" ]; then + veinfo "Running hook ${this} ('${hookfile_name}')" + else + this="${hookfile_name}" + veinfo "Running hook '${hookfile_name}'" + fi + + readonly this + + # initial directory should always be $S + cd "${S}" && . "${hookfile}" + ) || die "errors occured while running hook '${hookfile}'" fi done |