Próbuję zrozumieć pliki konfiguracyjne grub. Podczas tego procesu natknąłem się na plik /etc/grub.d/40_custom . Mój plik zawiera następujące wiersze:
#!/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
}
ponieważ mój system ma podwójny rozruch i najwyraźniej jest to program ładujący dla systemu Windows 10.
Moje pytanie dotyczy jednak tej części exec tail -n +3 $0
.
Jeśli odszyfrowuję go poprawnie, oznacza to po prostu wydrukowanie ostatnich linii, zaczynając od 3. linii ( +3
) pliku $0
. $0
oczywiście w tym przypadku jest to plik /etc/grub.d/40_custom .
Dlaczego więc używamy tego polecenia w pliku 40_custom ? Jak rozumiem, wynik byłby taki sam, gdyby ιt został całkowicie pominięty. Jedyne, o czym mógłbym pomyśleć, to pierwsza linia identyfikująca tłumacza:
#!/bin/sh
Ale potem znowu jest wykonywany, ponieważ exec tail -n +3 $0
następuje po nim. Czy to tylko konwencja (bezużyteczna)?
#!/bin/tail -n +2
jako shellbang? Czy wydrukuje resztę pliku?