Со сценарием с именем имя сценария. sh
, который содержит только это:
#!/bin/bash
echo "script executed"
exit
Закроет оболочку, в которой вы работаете, если сценарий взят из источника.
Чтобы предотвратить закрытие всего окна, запустите новую под-оболочку bash, просто выполнив bash
. Глубину вложенных оболочек можно увидеть в переменной SHLVL:
$ echo $SHLVL
1
$ bash
$ echo $SHLVL
2
$ bash
$ echo $SHLVL
3
Если в этот момент вы создадите скрипт, указанный выше:
$ source ./scriptname.sh
script executed
$ echo $SHLVL
2
Как видите, один экземпляр bash был закрыт.
То же самое произойдет с .
$ . ./scriptname.sh
script executed
$ echo $SHLVL
1
Если вы снова создадите сценарий на этом уровне, все окно закроется. Чтобы избежать этого, вызовите новый экземпляр bash.
Лучший способ запустить программу ./scriptname.sh - сделать ее исполняемой:
$ bash
$ echo $SHLVL
2
$ chmod u+x scriptname.sh
$ ./scriptname.sh
script executed
$ echo $SHLVL
2
Или даже вызвать сценарий с именем оболочки:
$ bash ./scriptname
script executed
$ echo $SHLVL
2
Это шаги для изменения порядка загрузки efi в системе Debian:
В BusyBox загрузите модуль ядра для fs, в нашем случае:
# modprobe ext4
Смонтируйте требуемые разделы. Обратите внимание, что root fs находится на sda3 в нашем конкретном случае:
# mkdir /mnt
# mount -t ext4 /dev/sda3 /mnt
# mount /proc /mnt/proc
# mount /sys /mnt/sys
Проникнуть в него:
# chroot /mnt
Загрузите модули ядра, необходимые для монтирования файловых систем и работы с efibootmgr:
# modprobe efivars
# modprobe vfat
# modprobe efivarfs
Смонтировать требуемый путь:
# mount -t efivarfs efivarfs /sys/firmware/efi/efivars
Теперь вы можете играть с efibootmgr:
# bin/efibootmgr -v
# bin/efibootmgr -o 0005,0004,0000,0001,0003,0001,0002
Завершить chroot и выйти:
# sync
# exit
Перезагрузитесь и наслаждайтесь.