カスタムメニュー項目を作成するには、次のコマンドで停止します。
exec tail -n +3 $0
ターミナルで試してみましたが、奇妙な結果が出ており、このコマンドが正確に何をするのか、なぜ grub に必要なのか理解できません。説明してもらえますか?
ベストアンサー1
あなたが言うなら/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.
それから注意してください。
grub-mkconfig
GRUB構成を構築するためのシェルスクリプトです。- このファイルは「カスタムメニュー項目を追加する簡単な方法」と見なされます。必要なGRUB設定を正確に入力するだけです。
ただし、これはシェルスクリプトなので、通常は次のことを行う必要がありますecho "menuentry ...."
。これを防ぐためにexec tail
魔法が使用されます。それが何をするのですか?$0
は実行されるスクリプトの名前なので、通常は40_custom
実行/etc/grub.d/40_custom
場所と方法によって異なります。したがって、スクリプトは本質的にtail
それ自体で実行されますが、それを使用すると3行目から始めるように-n +3
指示されます。tail
3行目からすべて印刷すると何が得られますか/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.
(また、この下に配置する他のコンテンツもあります。)
このexec
部分はスクリプトを実行するシェルに代わるものであるため、スクリプトの外にあるtail
ものは実際には実行されません。
端末で実行します。
$0
そうかもしれないしbash
(おそらく/bin/bash
)- 後で
exec
実行しているシェルを次に置き換えます。tail -n+3 bash
bash
そして、指定されたファイルが現在のディレクトリにない可能性があるので、tail
今すぐ終了します。
したがって、最終結果は、端末セッションがそこで終了する可能性が最も高い。