В чем разница между update-grub и update-grub2?

45

Я делаю некоторые изменения в файле grub в /etc/defaults/grub в некоторых уроках. У меня есть sudo update-grub и другие sudo update-grub2 , в чем разница?

    
задан Gerep 25.07.2012 в 03:51
источник

1 ответ

56

Нет никакой разницы.

Ubuntu 9.10 и более поздние версии установлены GRUB2, но sudo update-grub все еще преобладает как стандартная команда.

sudo update-grub и sudo update-grub2 эквивалентны, поэтому неважно, какой из них вы выполняете. /usr/sbin/update-grub2 - это просто символическая ссылка на /usr/sbin/update-grub .

[email protected]:~$ ls -l 'which update-grub update-grub2'
-rwxr-xr-x 1 root root 64 May 17 03:07 /usr/sbin/update-grub
lrwxrwxrwx 1 root root 11 May 17 03:22 /usr/sbin/update-grub2 -> update-grub
  • Фактически, вообще говоря иногда одна команда может быть символической ссылкой другого, и все же они ведут себя по-другому, потому что исполняемый файл проверяет , как он был вызван (то есть, по какое имя) и ведет себя соответственно.

    Это не тот случай для update-grub2 и update-grub , хотя оба они предоставляются пакетами, такими как grub-pc , которые предоставляют GRUB2. Кроме того, /usr/sbin/update-grub на самом деле всего лишь короткий скрипт оболочки, который выполняет большую часть своей работы с помощью еще одной команды, и мы можем посмотреть на его полный 3-строчный исходный код (в Ubuntu 12.04), чтобы увидеть, что имя, используемое для его вызова, не проверено:

    #!/bin/sh
    set -e
    exec grub-mkconfig -o /boot/grub/grub.cfg "[email protected]"
    

    "[email protected]" расширяется до всех аргументов командной строки, переданных после имени update-grub или update-grub2 , но не самого имени. И это единственное место в скрипте, в котором синтаксис командной строки вообще проверяется.

ответ дан Eliah Kagan 25.07.2012 в 04:09
источник