# weird redirections that caused trouble and were fixed in post-3.0 bash stuff() { c=1 ( sleep 5 < /dev/null >/dev/null 2>&1 & ) & } exec 3>&1 eval ` exec 4>&1 >&3 3>&- { stuff 4>&- echo "c=$c" >&4 }` echo c1 is $c unset -f stuff stuff() { c=2 ( sleep 5 < /dev/null >/dev/null 2>&1 & ) } exec 3>&1 eval ` exec 4>&1 >&3 3>&- { stuff 4>&- echo "c=$c" >&4 }` echo c2 is $c unset -f stuff stuff() { c=3 { sleep 5 < /dev/null >/dev/null 2>&1 & } & } exec 3>&1 eval ` exec 4>&1 >&3 3>&- { stuff 4>&- echo "c=$c" >&4 }` echo c3 is $c unset -f stuff stuff() { c=4 { sleep 5 < /dev/null >/dev/null 2>&1 & } } exec 3>&1 eval ` exec 4>&1 >&3 3>&- { stuff 4>&- echo "c=$c" >&4 }` echo c4 is $c # fixed in bash-3.1 echo 'exec <&3' | ${THIS_SH} 3<&0