スクリプト(バス/ダッシュなど)実行時のファイル記述子10

スクリプト(バス/ダッシュなど)実行時のファイル記述子10

スクリプトが実行されると、実行可能なスクリプトの内容とともにファイル記述子 10 が表示されます。

たとえば、スクリプトは次のようになります。

#!/bin/sh

sleep 600

processを介してfd実行中のスクリプトを見ると、実行可能なスクリプト自体の内容を含むfd10が表示されることがわかります。なぜ?

答え1

シェルは起動時にスクリプト全体を読み取るのではなく、一度に1つの文を読み取り実行します。したがって、スクリプトに接続し続ける必要があります。

質問が「なぜ10」なら?したがって、本質的にこれは「9より大きい最初のFD」です。歴史的にシェルを使用すると、「exec 4> / dev / tty」などの1桁のファイル記述子で作業できました。最新のシェルを使用すると、9より大きいFDを操作できます。

もちろん、起動時にすべての内容を読むことができますが、これは名前付きパイプやデバイスなどの項目を「スクリプト」として効果的に提供できないことを意味します。

関連情報