Criando entrada de menu personalizada, ficou preso neste comando:
exec tail -n +3 $0
Tentei no terminal, obtive um resultado estranho, não consigo entender, o que esse comando exatamente faz e por que o grub precisa dele. Você poderia explicar, por favor?
#
é um caractere de comentário para o grub, também#!/bin/cat
deve funcionar. (Você terá a linha de comentário shebang na saída, no entanto.)Se você está falando sobre
/etc/grub.d/40_custom
:Então observe que:
grub-mkconfig
para criar a configuração do GRUBMas esse é um script de shell, então geralmente você precisa fazer algo assim,
echo "menuentry ...."
etc. Para evitar isso, aexec tail
mágica é usada. O que isso faz?$0
, lembre-se, é o nome do script como executado, normalmente seria40_custom
(ou/etc/grub.d/40_custom
etc.), dependendo de onde e como foi executado. Portanto, o script está essencialmente rodandotail
em si mesmo, mas com-n +3
, o que indicatail
para começar a partir da terceira linha.O que você ganha se produzir tudo da terceira linha em diante
/etc/grub.d/40_custom
?(E, além disso, tudo o que você colocar abaixo disso.)
A
exec
parte substitui o shell com o qualtail
o script está sendo executado; portanto, nada mais do script é executado.Executando-o no terminal:
$0
é provavelmentebash
ou algo parecido (poderia ser/bin/bash
)exec
, você está substituindo o shell em execução portail -n+3 bash
bash
no diretório atual, étail
encerrado imediatamente.Portanto, é provável que o resultado final tenha terminado sua sessão no terminal.
fonte