コマンドラインシェルのマニアックな比較 その 3
その 2 の続き。
サブシェルでやったらどうなるの? ということで今度は (echo `cat`) を試した。
- bash
- cat はサブシェルもろとも停止。
fg で正しく再開可能。 - zsh
- cat はサブシェルもろとも停止。
fg で正しく再開可能。 - tcsh
- 元のシェルの直接のサブシェルのみ停止し、コマンド置換を行うための第二のサブシェルおよび cat は停止しない。制御は元のシェルに戻るが、cat が停止していないので入出力エラーが発生し、cat は終了する。よって
fg では正しく再開できない。 - ksh
- 分岐せずに、サブシェルで行うべき動作を元のシェルで行うため、例によって無限 fork 発生。
ksh は癖がありすぎだよ……。
ksh でサブシェルを強制的に分岐させるため、(echo `cat` | cat) で試したら、サブシェルだけ停止して嵌まった。まあ無限 fork しないだけでもよしとすべきか。
| 固定リンク

コメント