Переменная среды разнообразного пути устанавливает строки с ударом

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

Когда прерывание происходит, процессор выглядит, если прерывания маскируются. Если они, ничего не происходит, пока они не размаскированы. Когда прерывания становятся размаскированными, если существуют какие-либо незаконченные прерывания, процессор выбирает тот.

Затем процессор выполняет прерывание путем ветвления к конкретному адресу в памяти. Код в том адресе называют обработчиком прерываний. Когда процессор переходит там, он маскирует прерывания (таким образом, обработчик прерываний имеет эксклюзивный контроль), и сохраняет содержание некоторых регистров в некотором месте (обычно другие регистры).

Обработчик прерываний делает то, что он должен сделать, обычно путем общения с периферийным устройством, которое инициировало прерывание, чтобы отправить или получить данные. Если бы прерывание было повышено таймером, то обработчик мог бы инициировать планировщик ОС, для переключения на другой поток. Когда обработчик заканчивает выполняться, он выполняет специальную инструкцию возврата из прерывания, которая восстанавливает сохраненные регистры и размаскировала прерывания.

Обработчик прерываний должен работать быстро, потому что он препятствует тому, чтобы любое другое прерывание работало. В ядре Linux обработка прерывания разделена на две части:

  • “Верхняя половина” является обработчиком прерываний. Это делает необходимый минимум, обычно связывается с аппаратными средствами и устанавливает флаг где-нибудь в памяти ядра.
  • “Нижняя половина” делает любую другую необходимую обработку, например, копирование данных в память процесса, обновление структур данных ядра, и т.д. Это может занять время и даже блок, ожидающий некоторой другой части системы, так как это работает с включенными прерываниями.

Как обычно, по этой теме, для получения дополнительной информации читайте Драйверы устройств Linux; глава 10 о прерываниях.

9
17.05.2011, 17:41
3 ответа

Можно сделать:

export PATH="A"
export PATH="$PATH:B"
export PATH="$PATH:C"

Каждая последующая строка добавляет на ранее определенный тракт. Это обычно - хорошая привычка, поскольку она старается не повреждать существующий путь. Если Вы хотите, чтобы новый компонент имел приоритет, подкачайте порядок:

export PATH="A"
export PATH="B:$PATH"
export PATH="C:$PATH"

С другой стороны, Вы смогли делать:

export PATH=A:\
B:\ 
C

где \ отмечает продолжение строки. Не протестировали этот метод.

20
27.01.2020, 20:04
  • 1
    Отметьте это export встроенная команда, не ключевое слово, ни синтаксическое присвоение. Таким образом, если Вы имеете PATH элементы, содержащие пробел (или символы шарика), Вам действительно нужны двойные кавычки вокруг export PATH="$PATH:B". Вы могли также записать PATH=$PATH:B и так далее; Вы только должны export переменная однажды, не каждый раз, когда это изменяется (кроме некоторых очень старых Оболочек Bourne), и Вам не нужны двойные кавычки в присвоении. –  Gilles 'SO- stop being evil' 17.05.2011, 23:37
  • 2
    Также PATH+=:B работы для конкатенации строк. соединение –  Aryeh Leib Taurog 17.07.2013, 23:24

Можно расширить строки в ударе с помощью обратной косой черты в конце строки как это:

export PATH=/path/A:\
/path/B:\
/path/C

Обратите внимание на то, что отсутствие пробела важно здесь.

4
27.01.2020, 20:04

Другой подход:

export PATH=$(tr -d $'\n ' <<< "
   /path/A:
   /path/B:
   /path/C")

Дополнительным преимуществом является то, что вы не испортите уровни отступов.

1
27.01.2020, 20:04

Теги

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