Я делаю некоторые изменения в файле grub в /etc/defaults/grub
в некоторых уроках. У меня есть sudo update-grub
и другие sudo update-grub2
, в чем разница?
Я делаю некоторые изменения в файле grub в /etc/defaults/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
.
[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
, но не самого имени. И это единственное место в скрипте, в котором синтаксис командной строки вообще проверяется.