Sto cercando di capire i file di configurazione di grub. Quindi, durante questo processo mi sono imbattuto nel file /etc/grub.d/40_custom . Il mio file contiene le seguenti righe:
#!/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
}
dato che il mio sistema è dual boot e apparentemente questo è il boot loader per Windows 10.
La mia domanda però è questa parte exec tail -n +3 $0.
Se lo sto decifrando correttamente, ciò significa solo stampare le ultime righe a partire dalla terza riga ( +3) del file $0. $0ovviamente in questo caso è il file attuale /etc/grub.d/40_custom .
Quindi, perché utilizziamo questo comando nel file 40_custom ? A quanto pare, l'output sarebbe lo stesso se ιt fosse omesso del tutto. L'unica diversa che mi viene in mente è la prima riga che identifica l'interprete:
#!/bin/sh
Ma poi di nuovo viene eseguito poiché lo exec tail -n +3 $0segue. Quindi, questa è solo una convenzione (inutile)?
#!/bin/tail -n +2come shellbang? Stampa il resto del file?