Yash 2 その 125
組込みコマンドが標準出力に何か書こうとしてエラーになった時は原則として標準エラーにメッセージを出すようにした。
POSIX の規定では、標準エラーにメッセージを流すときはコマンドの終了ステータスは非 0 にすべしとなっている。従って、単に標準エラーにメッセージを書く書かないという問題ではなくて、コマンドの終了ステータスとして 0 を返すかどうかも併せて考えなければならない。基本的には、コマンドが成功した時は標準エラーには何も書かずに終了ステータス 0 を返し、失敗した時は標準エラーにメッセージを出して非 0 の終了ステータスを返すことになるが、幾つか例外もある。
- cd
- 作業ディレクトリの変更が成功したかどうかによって終了ステータスが決まる。標準出力への書き込みに失敗してもエラーとは見なさない。
- pushd, popd
- 作業ディレクトリおよびディレクトリスタックの変更が成功したかどうかによって終了ステータスが決まる。標準出力への書き込みに失敗してもエラーとは見なさない。
- fg, bg, wait
- このコマンドはジョブの終了ステータスを返すので、標準出力に書き込めなかったときのエラーは終了ステータスに影響しない。
- fc
- 単にコマンドの履歴を表示する場合は標準出力に書き込めなかったとき非 0 の終了ステータスを返すが、履歴のコマンドを実行する場合はそのコマンドの終了ステータスを返す。
| 固定リンク
コメント