スクリプトが実行されると、実行可能なスクリプトの内容とともにファイル記述子 10 が表示されます。
たとえば、スクリプトは次のようになります。
#!/bin/sh
sleep 600
processを介してfd
実行中のスクリプトを見ると、実行可能なスクリプト自体の内容を含むfd10が表示されることがわかります。なぜ?
答え1
シェルは起動時にスクリプト全体を読み取るのではなく、一度に1つの文を読み取り実行します。したがって、スクリプトに接続し続ける必要があります。
質問が「なぜ10」なら?したがって、本質的にこれは「9より大きい最初のFD」です。歴史的にシェルを使用すると、「exec 4> / dev / tty」などの1桁のファイル記述子で作業できました。最新のシェルを使用すると、9より大きいFDを操作できます。
もちろん、起動時にすべての内容を読むことができますが、これは名前付きパイプやデバイスなどの項目を「スクリプト」として効果的に提供できないことを意味します。