Я делаю некоторые изменения в моем файле Grub в /etc/default/grub
. В некоторых уроках я видел sudo update-grub
и другие sudo update-grub2
. В чем разница?
Нет никакой разницы.
В Ubuntu 9.10 и более поздних версиях установлен GRUB2, но sudo update-grub
он по-прежнему преобладает в качестве стандартной команды.
sudo update-grub
и sudo update-grub2
эквивалентны, так что не имеет значения, какой из них вы запускаете. /usr/sbin/update-grub2
это просто символическая ссылка на /usr/sbin/update-grub
.
ek@Del:~$ 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
на самом деле это всего лишь короткий сценарий оболочки, который выполняет большую часть своей работы с помощью еще одной команды, и мы можем посмотреть на его полный трехстрочный исходный код (в Ubuntu 12.04), чтобы увидеть, что имя, используемое для его вызова, не проверено:
#!/bin/sh
set -e
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
"$@"
распространяется на все аргументы командной строки, передаваемые после имени update-grub
или update-grub2
, но не самого имени. И это единственное место в скрипте, где синтаксис командной строки проверяется вообще.