Я где-то видел, что «bash используется для взаимодействия с ядром Linux».
Это применимо только к терминалу? Или каждая программа (включая программы с графическим интерфейсом) должна проходить через оболочку, чтобы завершить процесс, который она хочет сделать?
(Представьте, что мы раскрашиваем фотографию. Откуда bash знает, что мы делаем? Есть ли третья сторона между gimp и bash, которая конвертирует их в bash?)
Было бы очень полезно, если бы вы привели пример для объяснения :)
решение1
Нет. Только пользователи должны проходить через оболочку, чтобы общаться с ядром. Приложения используютAPI-интерфейсы.
Например, если я хочу удалить файл, мне придется использовать одну или другую оболочку, а затем приложение для удаления файла:
- С помощью оболочки интерфейса командной строки (CLI), такой как
bash
, я могу использоватьrm
команду для удаления файла. - С оболочкой GUI (например, Unity или GNOME Shell) я могу использовать что-то еще, например, файловый менеджер, чтобы удалить файл. Оболочке GUI, в свою очередь, не нужно использовать оболочку CLI.
Оба файловых менеджера и rm
в свою очередь могут использовать функцию unlink(3)
(или более высокого уровня remove(3)
) (илисистемный вызов) для выполнения фактической работы.