Используя экспорт в .bashrc

Вы смогли подстраивать что-то с kexec.

Да, kexec предназначается для начальной загрузки ядер, но ничто не останавливает Вас от kexec'луг к любому двоичному файлу ("статически связанный" двоичный файл, который не зависит от библиотек или существующей рабочей ОС и предназначен для выполнения при условиях перед начальной загрузкой), Вы хотите, ли загрузчик или даже memtest86 - что страница говорит о некоторых прерываниях, в которые можно упасть. Например, если это - загрузчик текстового режима, необходимо переключиться назад на текстовый режим перед изданием kexec.

Если Вы используете Debian kexec-tools или независимо от того, что в значительной степени выполняет все нормальные шаги завершения работы, включая переключение назад на текстовый режим, прежде, чем выйти kexec команда.

Что kexec не сделает загрузить диск или образ диска, но Вы могли извлечь загрузчик из CD и передать его kexec. Если бы начальная загрузка, CD находится в диске, который я не вижу, почему это не работало бы, но я не попробовал его.

Распаковка .iso в RAM и получение загрузчика .iso работать от него без загрузчика, являющегося знающим о ситуации, были бы технически возможными, но чрезвычайно трудными. Я не знаю ни о каких утилитах, способных к этому, и не полагаю, что любой существует.

48
24.08.2019, 23:33
3 ответа

Вам только нужно 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} потому что это получает его от среды

Таким образом отвечать на Ваш вопрос:

Это зависит, где переменная будет используемой, необходимо ли экспортировать его или нет.

56
27.01.2020, 19:34

Для внутренних переменных удара Вам не нужно export. От Вашего примера HISTTIMEFORMAT используется самим ударом и не нуждается в экспорте MYSQL_HISTFILE для mysql и это должно экспортировать иначе mysql не видит его.

3
27.01.2020, 19:34

Используйте экспорт для переменных окружения . Переменные окружения являются функцией операционной системы. Переменные окружения наследуются дочерними процессами: если вы устанавливаете их в оболочке, они доступны во всех программах, запускаемых этой оболочкой. Переменные, используемые многими приложениями или конкретными приложениями, отличными от 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", который читают все оболочки?

19
27.01.2020, 19:34

Теги

Похожие вопросы