EXIT トラップの実行時のリダイレクトがおかしい
シェルが誤った最適化を行っているため、シェルが終了する直前に設定された EXIT トラップが実行される時のリダイレクトが正しくないことがある。
たとえば
yash -c 'var=1; trap "echo \$var" EXIT >/dev/null'
シェルの最後に実行されるコマンドが関数で、関数実行開始前にはトラップが設定されておらず、関数の中でトラップが設定されるような場合にも同じような問題が起こる。
r2615 で修正。
シェルが誤った最適化を行っているため、シェルが終了する直前に設定された EXIT トラップが実行される時のリダイレクトが正しくないことがある。
たとえば
は 1 を出力するはずなのに何も出力しない。Trap 組込みを "finally_exit" で実行するかどうかの判定を trap 組込みの実行前に行っているため、trap 組込みを誤って "finally_exit" で実行してしまっているためである。シェルの最後に実行されるコマンドが関数で、関数実行開始前にはトラップが設定されておらず、関数の中でトラップが設定されるような場合にも同じような問題が起こる。