ฉันกำลังพยายามทำความเข้าใจไฟล์กำหนดค่าด้วง ดังนั้นในระหว่างกระบวนการนี้ฉันมาข้ามกับแฟ้ม/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 ( +3
) $0
ของแฟ้ม $0
แน่นอนในกรณีนี้เป็นไฟล์จริง/etc/grub.d/40_custom
แล้วทำไมเราถึงใช้คำสั่งนี้ในไฟล์40_custom เมื่อฉันได้รับมันเอาท์พุทจะเหมือนกันถ้ามันถูกละไว้โดยสิ้นเชิง ข้อแตกต่างที่ฉันอาจนึกถึงคือบรรทัดที่ 1 ซึ่งระบุล่าม:
#!/bin/sh
แต่แล้วมันก็ถูกดำเนินการอีกครั้งตั้งแต่exec tail -n +3 $0
มันตามมา ดังนั้นนี่เป็นเพียงการประชุม (ไร้ประโยชน์) หรือไม่?
#!/bin/tail -n +2
เป็น shellbang ล่ะ? มันจะพิมพ์ไฟล์ที่เหลือหรือไม่?