我正在尝试了解grub配置文件。因此,在此过程中,我遇到了文件/etc/grub.d/40_custom。我的文件包含以下几行:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "Windows 10" --class windows --class os {
insmod part_msdos
savedefault
insmod ntfs
insmod ntldr
set root='(hd0,msdos1)'
ntldr ($root)/bootmgr
}
因为我的系统是双启动,显然这是Windows 10的启动加载程序。
我的问题是这部分exec tail -n +3 $0
。
如果我正确地解密了,这意味着从文件的第三行(+3
)开始打印最后的行$0
。$0
在这种情况下,当然是实际文件/etc/grub.d/40_custom。
那么,为什么要在40_custom文件中使用此命令?如我所知,如果完全省略lt,输出将是相同的。我可能想到的唯一不同之处是标识解释器的第一行:
#!/bin/sh
但是随后再次执行它,因为exec tail -n +3 $0
遵循它。那么,这仅仅是(无用的)约定吗?
#!/bin/tail -n +2
shellbang怎么办?它会打印文件的其余部分吗?