Grub отлично работает на диске с таблицами разделов GPT, однако для установки на секционированный диск GPT на диске должен быть небольшой (1 мб) раздел, особенно для grub. (на секционированных дисках msdos есть пространство, которое использует grub, но этого нет в разделах GPT). Последние версии gparted способны создавать эти небольшие разделы. К сожалению, если ваш диск был разделен без этого раздела, вам не повезло, так как перемещение раздела даже одного мегабайта - это большое испытание. https://www.gnu.org/software/grub/manual/html_node/BIOS-installation.html
Grub 2 поддерживает загрузку из GPT даже из BIOS, так как не требует основного режима UEFI. Все компьютеры Apple, не являющиеся яблоками, которые я знаю, поддерживают загрузку в режиме BIOS, и это рекомендуется для загрузки UEFI.
Короткий вариант:
sh
- интерпретатор командной строки (тире) .Running sh my_script
заставляет интерпретировать скрипт. ./
пытается выяснить, какой интерпретатор использовать, посмотрев на первую строку. Например. #! / bin / bash
или даже #! / bin / ruby
(как показано на выполнение ruby my_script
). mkdir ~ / bin; cp myscript.sh ~ / bin / echo "export PATH =" $ PATH: / home / $ USER / bin "& gt; ~ / .profile; source ~ / .profile;
Не / usr / sbin
, это для несущественных административных инструментов, / usr / local / bin
- лучший выбор, если вы не хотите иметь ~ / bin /
, но избегать sudo
как можно больше.
~ / .profile
уже есть код для добавления ~ / bin
, если он существует, в PATH
. В другой заметке не ставьте расширения на скрипты.
– geirha
24 January 2011 в 11:44
ls ~ / bin / | wc -l = 428
) Я положил туда много чего;)
– Joey1978
24 January 2011 в 12:01
/ bin
и / usr / bin
, вы увидите, что они не используют расширения.
– geirha
2 February 2011 в 12:49
Разница, которую вы делаете,
sh
, вы запускаете программу, которая будет интерпретировать строки в вашем скрипте так же, как вы бы набрали их в интерактивной подсказке терминала, ./
, вы делаете ярлык, предполагая, что скрипт находится прямо здесь, в текущем каталоге, в котором вы сидите в И он будет исполняться (потому что, например, вы выпустили chmod + x myscript.sh
), сохраняя бесценное время для будущих времен: -) Есть три основные причины, по которым вы можете получить сообщение об ошибке:
chmod + x & lt; myscriptname.sh & gt;
, чтобы исправить это noexec
») копирует сценарий на / usr / local / bin
#!
имеет ошибку, убедитесь, что первая строка - #! / bin / sh
или #! / bin / bash
[ ! d11] Если ваша первая строка выглядит правильно, но все еще не работает, убедитесь, что файл не имеет окончаний строки DOS.
Ошибка будет выглядеть примерно так: :
$ ./myscript.sh bash: ./myscript.sh: / bin / bash ^ M: плохой интерпретатор: нет такого файла или каталога
Вы можете исправить это, запустив dos2unix & lt; myscriptname.sh & gt;
, или если у вас этого нет, perl -p -i -e 's / \r \n $ / \n / '& lt; myscriptname.sh & gt;
.
И ответ заключается в том, что sh - это имя для очень популярной оболочки. Но устарели и заменены другими. В настоящее время sh связан с другими оболочками, установленными на машине. например У меня есть баш. Запуск любой оболочки из sh обычно запускает некоторый режим совместимости с оригинальным поведением «оболочки».
Так что решение довольно простое. Посмотрите, что находится за командой sh (ls -al / bin / sh), и поставьте #! / Bin / whatever_you_find_there в качестве первой строки (или если что-то подобное в вашем скрипте отредактирует).
И, альтернативно, может возникнуть ошибка в самом скрипте. Подобно зависимости, которую выполняет sh, но не интерпретатор, который фактически используется.
Короткий вариант:
sh
- интерпретатор командной строки (тире) .Running sh my_script
заставляет интерпретировать скрипт. ./
пытается выяснить, какой интерпретатор использовать, посмотрев на первую строку. Например. #! / bin / bash
или даже #! / bin / ruby
(как показано на выполнение ruby my_script
). ./
, который находит что-либо, это метод выполнения системы, который смотрит на первые два байта файла.
– Martin Owens -doctormo-
23 January 2011 в 20:08