1

Linux または MacOS で以下の 2 つのコマンドを発行すると、シェル セッションが終了し、エラー メッセージは表示されません。

➜  ~  sh
sh-3.2$ exec<>5
sh-3.2$ exit    ==> 'exit' was issued by the shell itself!

これは「/bin/sh」の欠陥ですか? 誰でも洞察を提供できますか?

RHEL の /bin/sh:

-sh-4.1$ sh --version GNU bash、バージョン 4.1.2(1)-release (x86_64-redhat-linux-gnu) Copyright (C) 2009 Free Software Foundation, Inc.

私の MacOS の /bin/sh:

➜ ~ sh --version GNU bash、バージョン 3.2.57(1)-release (x86_64-apple-darwin14) Copyright (C) 2007 Free Software Foundation, Inc.

4

2 に答える 2

1

「<」の前のデフォルトのファイル記述子は stdin であるため、コマンドをexec 0<>5. つまり、stdin を「5」という名前のファイルからの読み取り/書き込みに置き換えます。ファイルが空なので、シェルは終了します (これ以上の入力はありません)。実際にシェル コマンドをファイルに入れると、これが発生することがわかります。これを試して:

echo 'echo here i am; sleep 3' >5
exec <>5
于 2015-11-21T13:25:35.970 に答える