Tôi đang cố gắng để hiểu các tập tin cấu hình grub. Vì vậy, trong quá trình này, tôi đã bắt gặp với tập tin /etc/grub.d/40_custom . Tập tin của tôi chứa các dòng sau:
#!/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
}
vì hệ thống của tôi là boot kép và rõ ràng đây là bộ tải khởi động cho windows 10.
Câu hỏi của tôi mặc dù là phần này exec tail -n +3 $0
.
Nếu tôi giải mã chính xác, điều này chỉ có nghĩa là in các dòng cuối cùng bắt đầu từ dòng thứ 3 ( +3
) của tệp $0
. $0
tất nhiên trong trường hợp này là tập tin thực tế /etc/grub.d/40_custom .
Vậy, tại sao chúng ta sử dụng lệnh này trong tệp 40_custom ? Khi tôi nhận được nó, đầu ra sẽ giống nhau nếu ιt bị bỏ qua hoàn toàn. Sự khác biệt duy nhất tôi có thể nghĩ đến là dòng thứ 1 xác định trình thông dịch:
#!/bin/sh
Nhưng sau đó một lần nữa nó được thực hiện kể từ exec tail -n +3 $0
sau nó. Vì vậy, đây chỉ là một quy ước (vô dụng)?
#!/bin/tail -n +2
như một shellbang thì sao? Nó sẽ in phần còn lại của tập tin?