当脚本运行时,文件描述符10与可执行脚本的内容一起出现。
例如,脚本:
#!/bin/sh
sleep 600
当通过进程查看fd
正在运行的脚本时,我看到出现了 fd10,其中包含可执行脚本本身的内容。为什么?
答案1
shell 一次读取并执行一个语句,而不是在启动时读取整个脚本。因此它需要保持与脚本的连接。
如果问题是“为什么是 10”?那么本质上这是“第一个大于 9 的 FD”。从历史上看,shell 允许您操作个位数的文件描述符,例如“exec 4>/dev/tty”。现代 shell 允许您操纵大于 9 的 FD。
当然,它可以在启动时读取所有内容,但这意味着您无法有效地将命名管道或设备等内容作为“脚本”提供。