Si vous parlez de /etc/grub.d/40_custom
:
$ cat /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.
Notez ensuite que:
- ceci est un script shell, et est exécuté par
grub-mkconfig
pour construire la configuration GRUB
- ce fichier est censé être "un moyen facile d'ajouter des entrées de menu personnalisées" - il vous suffit de taper exactement la configuration GRUB que vous souhaitez.
Mais ceci est un script shell, donc vous devez généralement faire quelque chose comme echo "menuentry ...."
etc. Pour éviter cela, la exec tail
magie est utilisée. Qu'est-ce que ça fait? $0
, rappelez-vous, est le nom du script tel qu'il est exécuté, il le serait donc généralement 40_custom
(ou /etc/grub.d/40_custom
, etc., selon l'endroit et la manière dont il a été exécuté). Ainsi, le script s'exécute essentiellement tail
sur lui-même, mais avec -n +3
, qui indique tail
de commencer à partir de la troisième ligne.
Qu'obtenez-vous si vous sortez tout à partir de la troisième ligne /etc/grub.d/40_custom
?
# 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.
(Et en plus de tout ce que vous mettez en dessous.)
La exec
partie remplace le shell qui exécute le script tail
, donc rien de plus éloigné du script n'est exécuté.
L'exécuter dans le terminal:
$0
est probablement bash
ou quelque chose comme ça (ça pourrait être /bin/bash
)
- et à cause de cela
exec
, vous remplacez le shell en cours d'exécution partail -n+3 bash
- et comme vous n'avez probablement pas de fichier nommé
bash
dans votre répertoire actuel, tail
quittez rapidement.
Le résultat final est donc probable que votre session de terminal se soit terminée là.
#
s'agit d'un caractère de commentaire pour grub anway,#!/bin/cat
devrait également fonctionner. (Vous aurez cependant la ligne de commentaires shebang dans la sortie.)