Это происходит из-за установки загрузчика на potentially-multi-boot Карте памяти. Конфигурация Личинки для диска настраивается для начальной загрузки различных Ose непосредственно: это содержит записи как
menuentry "Ubuntu 10.10 Desktop ISO" {
loopback loop /ubuntu.iso
linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=/ubuntu.iso noeject noprompt splash --
initrd (loop)/casper/initrd.lz
}
Такая запись загружается непосредственно в обозначенную операционную систему, обходя загрузчик в ISO.
Я думаю, что было бы возможно переключиться на другой конфигурационный файл с configfile (loop)/path/to/grub.cfg
, если загрузчиком в ISO является также Grub2 (который не так распространен на CD). Загрузка загрузчика в ISO была бы трудной, поскольку загрузчик должен будет понять, где найти его компоненты.
Короткий ответ - то, что Вы не можете.
Идея позади использования #!/usr/bin/env ruby
вместо просто #!/usr/bin/ruby
должен использовать любой рубиновый двоичный файл, является первым в пути пользователя. Затем Ваш сценарий не зависит от рубина, находящегося в том же месте в каждой системе; в конце концов, 'нормальное' рубиновое местоположение могло бы быть /usr/bin/ruby
, /usr/local/bin/ruby
, /opt/ruby-1.8.7/bin/ruby
, и т.д...
Если Вы DID хочет к hardcode некоторые значения или делает некоторую ищущую логику, Вы могли бы всегда делать сценарий оболочки обертки:
#!/bin/sh
for ruby in /usr/bin/ruby /usr/local/bin/ruby
do
if [ -x "$ruby" ]
then
"$ruby" myscript.rb
break
fi
done
И если Вы достаточно мотивированы, Вы могли бы даже встроить рубин (или другой) сценарий в сценарии оболочки.
Я собираюсь противоречить mrb и сказать, что можно сделать альтернативы, не изменяясь "#!" строка.
Предположим, что у Вас есть рубиновый сценарий с #!/usr/bin/env ruby
как первая строка.
Вы хотите /path/to/better/ruby/version/whatever
для запущения скрипта Вы устанавливаете переменную окружения PATH, чтобы иметь /path/to/better/ruby/version
во-первых:
PATH=/path/to/better/ruby/version:$PATH whatever_script_name_is
Вы хотите /usr/local/bin/ruby
запускать скрипт? Установите ПУТЬ соответственно:
PATH=/usr/local/bin:$PATH whatever_script_name_is
Обратите внимание, что игра с ПУТЕМ может вызвать другие проблемы в случае, что рубиновый исполняемый файл, Вы хотите запустить скрипт, находится в том же каталоге с другими альтернативными программами. Например, если /usr/local/bin
имел BSD cat
, grep
, sed
в нем, а также ruby
, затем, когда Вы устанавливаете PATH=/usr/local/bin:$PATH
Вы получите исполняемые файлы BSD вместо исполняемых файлов Linux. Это могло заключить проблему в корпус.