for file in `ls`|cut -d"-" -f1
do
cat ${file}-* > ${file}
done
это будет отбирать
файлы с таким же префиксом имени и отправлять вывод в файл с тем же префиксом, при условии, что у вас нет других случайных файлов в том же каталоге, в котором вы находитесь
su - root
вместоsu root
-лучшее решение (благодаря Rui)Это произошло из-за того, что PATH работает очень странно (на самом деле работает так, как задумано ).
regular user login
-> окружение PATH не содержит /usr/sbin => мнение:работает как продуманный, вполне логичный su root
-> права администратора, но в среде отсутствует /usr/sbin :/sbin => мнение:работает как задумано, но нелогично, потому что учетная запись с правами root должна иметь возможность выполнять команды из sbin без добавления пути к бинарникам вручнуюsu - root
-> права админа, /usr/sbin по пути => мнение:работает как продуманный, вполне логичный Еще предыстория
В файле /etc/login.defs определены два PATH, но если я не начну su -
или su - root
, я получу ENV _PATH. Я знаю, что это было разработано таким образом, чтобы сохранить среду реального пользователя, но в этом единственном случае это действительно уму непостижимо,почему бы не добавить автоматически /usr/sbin
и /sbin
к пути "обычного пользователя" после успешногоsu root
# cat /etc/login.defs |grep PATH=
ENV_SUPATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV_PATH PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Я обнаружил, что в /usr/sbin
есть команда update-grub
.
# find / -name update-grub
/usr/sbin/update-grub
Запустил его, чтобы получить следующее сообщение об ошибке.
# /usr/sbin/update-grub
/usr/sbin/update-grub: 4: exec: grub-mkconfig: not found
Искал grub-mkconfig
и нашел его под /usr/sbin/grub-mkconfig
. Тут мне пришло в голову, а давайте посмотрим, как выглядит скрипт update-grub
?
#cat /usr/sbin/update-grub |grep grub-mkconfig
exec grub-mkconfig -o /boot/grub/grub.cfg "$@"
Изменен /usr/sbin/update -grub для вызова grub-mkconfig
по его явному пути...
exec /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg "$@"
... затем вызвал update-grub
с его явным путем и тада, это сработало!
# /usr/sbin/update-grub
Generating grub configuration file...
Found background image: /usr/share/images/desktop-base/desktop-grub.png
Found linux image: /boot/vmlinuz-4.18.0-2-amd64
Found initrd image: /boot/initrd.img-4.18.0-2-amd64
Found linux image: /boot/vmlinuz-4.16.0-2-amd64
Found initrd image: /boot/initrd.img-4.16.0-2-amd64
done
Заключение
Это должно быть что-то о PATH
Вы можете принудительно переустановитьgrub
:
sudo apt-get install --reinstall grub
Сначала обновите локальный список пакетов:
sudo apt update && sudo apt upgrade
Найти правильный режим загрузки:
[ -d /sys/firmware/efi ] && echo EFI || echo legacy
затем принудительная переустановка пакета grub для пакета leagcy grub-legacy
и для efigrub-efi
(Я предполагаю, что вы используете режим загрузки EFI):
sudo apt install --reinstall grub-efi
sudo apt install grub-common
Если проблема все еще не решена, попробуйте это на:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Командаupdate-grub
— это всего лишь скрипт, который запускает инструмент grub-mkconfig
для создания файла grub.cfg. См. документацию Archlinux GRUB
Ссылка: