Вы смогли подстраивать что-то с kexec
.
Да, kexec
предназначается для начальной загрузки ядер, но ничто не останавливает Вас от kexec
'луг к любому двоичному файлу ("статически связанный" двоичный файл, который не зависит от библиотек или существующей рабочей ОС и предназначен для выполнения при условиях перед начальной загрузкой), Вы хотите, ли загрузчик или даже memtest86 - что страница говорит о некоторых прерываниях, в которые можно упасть. Например, если это - загрузчик текстового режима, необходимо переключиться назад на текстовый режим перед изданием kexec
.
Если Вы используете Debian kexec-tools
или независимо от того, что в значительной степени выполняет все нормальные шаги завершения работы, включая переключение назад на текстовый режим, прежде, чем выйти kexec
команда.
Что kexec
не сделает загрузить диск или образ диска, но Вы могли извлечь загрузчик из CD и передать его kexec. Если бы начальная загрузка, CD находится в диске, который я не вижу, почему это не работало бы, но я не попробовал его.
Распаковка .iso в RAM и получение загрузчика .iso работать от него без загрузчика, являющегося знающим о ситуации, были бы технически возможными, но чрезвычайно трудными. Я не знаю ни о каких утилитах, способных к этому, и не полагаю, что любой существует.
Вам только нужно export
для переменных, которые должны быть "замечены" другими программами, которые Вы запускаете в оболочке, в то время как те, которые только используются в самой оболочке, не должны быть export
редактор.
Это - то, что говорит страница справочника:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
Это может быть продемонстрировано со следующим:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
Объяснение:
${MYVAR}
быть переменной Shell с MYVAR="value"
. Используя echo
Я могу повторить значение его, потому что эхо является частью оболочки.echo.sh
. Это - немного сценария, который в основном делает то же, он просто отзывается эхом ${MYVAR}
, но различие - то, что это будет работать в другом процессе, потому что это - отдельный сценарий.echo.sh
это ничего не производит, потому что новый процесс не наследовался ${MYVAR}
${MYVAR}
в мою среду с export
ключевое словоecho.sh
снова, это повторяет содержание ${MYVAR}
потому что это получает его от средыТаким образом отвечать на Ваш вопрос:
Это зависит, где переменная будет используемой, необходимо ли экспортировать его или нет.
Для внутренних переменных удара Вам не нужно export
. От Вашего примера HISTTIMEFORMAT
используется самим ударом и не нуждается в экспорте MYSQL_HISTFILE
для mysql
и это должно экспортировать иначе mysql
не видит его.
Используйте экспорт
для переменных окружения . Переменные окружения являются функцией операционной системы. Переменные окружения наследуются дочерними процессами: если вы устанавливаете их в оболочке, они доступны во всех программах, запускаемых этой оболочкой. Переменные, используемые многими приложениями или конкретными приложениями, отличными от shell'ов, являются переменными окружения. Вот несколько примеров общих переменных окружения:
HOME
- указывает на домашний каталог пользователя, в котором находятся конфигурационные файлы для каждого пользователя. Используется любой программой, которая читает конфигурационные файлы для каждого пользователя или которой необходимо знать расположение домашнего каталога пользователя. PATH
- указывает, где найти исполняемые файлы для запуска других программ. Используется каждой программой, которой необходимо запустить другую программу. LD_LIBRARY_PATH
- указывает, где найти файлы динамических библиотек. Используется каждым динамически связанным исполняемым файлом. EDITOR
, VISUAL
- указывает, какую программу нужно запускать, когда нужен редактор. Используется любой программой, которой требуется запустить текстовый редактор. DISPLAY
, XAUTHORITY
- указывает, как подключиться к серверу X11. Используется клиентами X11 (т.е. GUI-программами). LESS
- опции, автоматически включаемые при выполнении less
. Используется минус
. http_proxy
- указывает на использование веб-прокси. Используется большинством веб-браузеров. - не использовать экспорт
для переменных оболочки. Переменные оболочки являются особенностью оболочки как языка программирования. Переменные оболочки используются только внутри оболочки, где они установлены; они не имеют значения для программ, запускаемых оболочкой. Переменные оболочки дублируются при создании подоболочки, как и в остальном состоянии оболочки. Вот несколько примеров переменных оболочки, которые имеют значение для популярных оболочек:
PS1
- приглашение к отображению перед каждой командой. IFS
- символы, разделяющие слова в нецитируемых расширениях переменных и подстановках команд. HISTFILE
- файл, в который shell будет записывать историю команд. В дополнение к переменным, которые используются оболочкой, большинство скриптов оболочки используют переменные для своих внутренних целей.
Большинство переменных окружения (например, PATH
) имеют смысл для всего сеанса и должны быть установлены в ~/.profile
или аналогичном файле. Переменные, которые имеют смысл только для конкретной оболочки (например, PS1
), должны быть установлены в специальный файл оболочки, такой как ~/.bashrc
или ~/.zshrc
. См. Есть ли эквивалентный файл ".bashrc", который читают все оболочки?