Вот высокоуровневое представление обработки низкого уровня. Я описываю простую типичную архитектуру, реальная архитектура может быть более сложной или отличаться способами, которые не имеют значения в этом уровне детализации.
Когда прерывание происходит, процессор выглядит, если прерывания маскируются. Если они, ничего не происходит, пока они не размаскированы. Когда прерывания становятся размаскированными, если существуют какие-либо незаконченные прерывания, процессор выбирает тот.
Затем процессор выполняет прерывание путем ветвления к конкретному адресу в памяти. Код в том адресе называют обработчиком прерываний. Когда процессор переходит там, он маскирует прерывания (таким образом, обработчик прерываний имеет эксклюзивный контроль), и сохраняет содержание некоторых регистров в некотором месте (обычно другие регистры).
Обработчик прерываний делает то, что он должен сделать, обычно путем общения с периферийным устройством, которое инициировало прерывание, чтобы отправить или получить данные. Если бы прерывание было повышено таймером, то обработчик мог бы инициировать планировщик ОС, для переключения на другой поток. Когда обработчик заканчивает выполняться, он выполняет специальную инструкцию возврата из прерывания, которая восстанавливает сохраненные регистры и размаскировала прерывания.
Обработчик прерываний должен работать быстро, потому что он препятствует тому, чтобы любое другое прерывание работало. В ядре Linux обработка прерывания разделена на две части:
Как обычно, по этой теме, для получения дополнительной информации читайте Драйверы устройств Linux; глава 10 о прерываниях.
Можно сделать:
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
где \
отмечает продолжение строки. Не протестировали этот метод.
Можно расширить строки в ударе с помощью обратной косой черты в конце строки как это:
export PATH=/path/A:\
/path/B:\
/path/C
Обратите внимание на то, что отсутствие пробела важно здесь.
Другой подход:
export PATH=$(tr -d $'\n ' <<< "
/path/A:
/path/B:
/path/C")
Дополнительным преимуществом является то, что вы не испортите уровни отступов.
export
встроенная команда, не ключевое слово, ни синтаксическое присвоение. Таким образом, если Вы имеетеPATH
элементы, содержащие пробел (или символы шарика), Вам действительно нужны двойные кавычки вокругexport PATH="$PATH:B"
. Вы могли также записатьPATH=$PATH:B
и так далее; Вы только должныexport
переменная однажды, не каждый раз, когда это изменяется (кроме некоторых очень старых Оболочек Bourne), и Вам не нужны двойные кавычки в присвоении. – Gilles 'SO- stop being evil' 17.05.2011, 23:37PATH+=:B
работы для конкатенации строк. соединение – Aryeh Leib Taurog 17.07.2013, 23:24