На Fedora я использую:
grub2-mkconfig -o "$(readlink -e /etc/grub2.cfg)"
потому что выполнение без опции readlink
возвращает относительный путь, а grub2-mkconfig
дает ошибку:
$ ls -l /etc/grub2.cfg
lrwxrwxrwx. 1 root root 22 Dec 10 2015 /etc/grub2.cfg -> ../boot/grub2/grub.cfg
$ readlink /etc/grub2.cfg
../boot/grub2/grub.cfg
$ sudo grub2-mkconfig -o "$(readlink /etc/grub2.cfg)"
/usr/sbin/grub2-mkconfig: line 244: ../boot/grub2/grub.cfg.new: No such file or directory
Я использую опцию -e
, чтобы если симлинк не разрешается в существующий файл, вывод отображался на stdout, чтобы я знал, что что-то пошло не так.
Из man-страницы для readlink:
-e, --canonicalize-existing
canonicalize by following every symlink in every component of
the given name recursively, all components must exist