[JM:00468] Re: [POST:DO] bash bash.1

アーカイブの一覧に戻る

長南洋一 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 したりすると」ぐらいに軽く
訳してもよいのではないでしょうか。まあ、どちらでもたいした変わりは
ありませんけれど。

-- 
長南洋一




linuxjm-discuss メーリングリストの案内
アーカイブの一覧に戻る