長南洋一
cyoic****@maple*****
2011年 10月 24日 (月) 20:12:07 JST
長南です。 Takahashi さんのメールより [JM:00467] > >>>> .\"O Note that setting >>>> .\"O .SM >>>> .\"O .B BASH_XTRACEFD >>>> .\"O to 2 (the standard error file >>>> .\"O descriptor) and then unsetting it will result in the standard error >>>> .\"O being closed. >>>> .SM >>>> .B BASH_XTRACEFD >>>> に 2 (標準エラー出力のファイル・ディスクリプター) を設定して >>>> unset すると、標準エラー出力がクローズされてしまうことに >>>> 注意してください。 >>> >>> 訳としては正しいのですが、著者の意図が今ひとつ出ていない気がします。 >>> つまり、ここでは標準エラーに出力させようとして、二重操作をやっては >>> いけない、と言いたいわけです。then を生かせばよいのではないでしょうか。 >>> たとえば、 >>> >>> BASH_XTRACEFD を 2 (標準エラー出力のファイル・ディスクリプター) に >>> 設定してから、さらに unset したりすると、標準エラー出力がクローズ >>> されてしまうことに気をつけてください。 >> >> 「二重操作」という言葉で問題としている意味が、私には分かりませんでした。 > > メールの意味を読み違えていました。「さらに」と書いている unset じゃなく > て、設定するほうが二重操作という話ですね。 いえ、高橋さんの最初の読みの方がたぶん合っています。つまり、わたしは こういう状況を想定していたのです。 出力を標準エラーにしようとして、BASH_XTRACEFD=2 を設定する。 その後すぐ、出力を標準エラーにするには、BASH_XTRACEFD を unset するのだったと思い出して、unset BASH_XTRACEFD を実行する。 それで、「二重操作」という説明になったわけです。 高橋さんは、別の状況をお考えになったのですね。 > 以下のとおり修正しました。 > > BASH_XTRACEFD に 2 (標準エラー出力のファイル・ディスクリプター) を > 設定してしまうと、unset したときに標準エラー出力がクローズされてし > まうことに注意してください。 高橋さんが想像なさった状況は、たとえば、こういうことでしょう。 BASH_XTRACEFD=2 を設定する。しばらくしてから、すでに標準エラーに 出力していることを忘れ、出力先を標準エラーに変更しようとして、 今度は unset BASH_XTRACEFD を実行してしまう。 それならば、最初、「二重操作」というわたしの説明がピンと来なかった のも当然だと思います。 実際にありそうなのは、高橋さんの想像の方ですね。 そういうわけで、新しい訳の言っていることは、正しいと思います。 ただ、BASH_XTRACEFD=2 を設定すること自体は、別にいけないことでは ないので、「BASH_XTRACEFD に 2 を設定してしまうと」というのは、 ちょっと強すぎるかもしれません。「BASH_XTRACEFD に 2 を設定し、 その後で (BASH_XTRACEFD を) unset したりすると」ぐらいに軽く 訳してもよいのではないでしょうか。まあ、どちらでもたいした変わりは ありませんけれど。 -- 長南洋一