bash -c 'some command'
сохраняет доступ к стандартному вводу вызывающей стороны, поэтомуread
или команды чтения со стандартного ввода будут работать нормально. bash <<< 'some command'
заменяет этот ввод переданной строкой, поэтому bash -c cat
и bash <<< cat
делают разные вещи.
$ bash -c cat
abc
abc
^D
$ bash <<< cat
$
С другой стороны, вы можете использовать эту функцию для предоставления собственного стандартного ввода, который будет использоваться через $'...'
, если вы будете очень осторожны:
$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$
Я бы не стал на это полагаться, но иногда это может быть удобно.
bash -c
также позволяет передавать аргументы сценарию и $0
устанавливать:
bash -c 'some command' sh abc def
установит $1
на abc
и $2
на def
внутри some command
.
Вы путаете две совершенно разные вещи...
Модули ядра Linux — это то, что неспециалисты называют драйверами . Они позволяют использовать видеокарту, сетевую карту, звук и т. д. Вы можете отключить драйверы, которые не используете; но если у вас нет необходимых драйверов, ваша система не запустится.
Модули ядра можно найти в виде файлов с расширением .ko
, расположенных где-то внутри каталога /lib/modules
на вашем компьютере.
Библиотека GNU C является хорошо -известной маркой системной библиотеки(системной DLL, если вы настаиваете ). Он действует как мост для пользовательских программ (, т.е. программы Unix, написанной на C )в , работающей на ядре Linux. Если у вас нет системной библиотеки, ваши программы должны быть написаны на языке ассемблера, чтобы работать.
Основной элемент библиотеки GNU C можно найти в виде DLL с именем libc-*.so
, расположенной где-то внутри каталога /lib/*-linux-gnu/
на вашем компьютере.
Примечание. :Этот ответ на самом деле сильно упрощает вопрос.
Нет, модули ядра Linux и библиотека GNU C — это не одно и то же, и я не знаю, откуда вы взяли эту идею.
Модули ядра — это части ядра Linux, которые можно загружать по запросу. В зависимости от конфигурации могут быть тысячи модулей, а при обычной установке будет использоваться только несколько сотен, но какие из этих модулей используются, зависит от аппаратного обеспечения и других факторов.
Библиотека GNU C, с другой стороны, представляет собой набор функций C для пользовательских программ и не используется в ядре.