Ich versuche, die Grub-Konfigurationsdateien zu verstehen. Während dieses Prozesses bin ich auf die Datei /etc/grub.d/40_custom gestoßen . Meine Datei enthält die folgenden Zeilen:
#!/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
}
da mein System Dual Boot ist und dies anscheinend der Bootloader für Windows 10 ist.
Meine Frage ist jedoch dieser Teil exec tail -n +3 $0
.
Wenn ich es richtig entschlüssele, bedeutet dies nur, dass die letzten Zeilen ab der dritten Zeile ( +3
) der Datei gedruckt werden $0
. $0
in diesem fall ist natürlich die aktuelle datei /etc/grub.d/40_custom .
Warum verwenden wir diesen Befehl in der Datei 40_custom ? Wie ich es erhalte, wäre die Ausgabe die gleiche, wenn es ganz weggelassen wurde. Der einzige Unterschied, an den ich denken könnte, ist die erste Zeile, die den Interpreter identifiziert:
#!/bin/sh
Aber dann wird es wieder ausgeführt, da es exec tail -n +3 $0
folgt. Also, ist das nur eine (nutzlose) Konvention?
#!/bin/tail -n +2
als Shellbang schreiben ? Wird der Rest der Datei gedruckt?