Программы представляют собой обычный исполняемый файл, написанный на любом языке (в основном C).
Оболочка принимает введенную команду, которая представляет собой только строку. Затем он ищет определенные последовательности символов, которые имеют особое значение для оболочки, такие как переменные среды, которые являются $
, за которым следует слово или переадресация, которые являются >
, за которым следует путь. После того, как эта подстановка была предварительно сформирована, у нее есть строка, которая разбивается на пробелы, чтобы сгенерировать имя исполняемого файла и параметры. Затем оболочка будет искать исполняемый файл в списке каталогов в переменной окружения PATH. Затем оболочка использует системные вызовы для создания процесса из исполняемого файла с параметрами.
Например, чтобы выполнить команду ls $HOME
оболочка будет сначала признать, что $HOME
является переменной окружающей среды и заменить его на его значение в этом случае /home/user
оставляя команду ls /home/user
. Затем он разделяет команду на пробел, чтобы получить исполняемое имя ls
и параметр /home/user
. Оболочка находит первый исполняемый файл, который соответствует ls
обычно /bin/ls
. Затем он использует эфирные вызовы spawn()/posix_spawn() или fork() и exec() для создания нового процесса.
Я новичок и очень запутался. Это может объяснить мне намного лучше. – CODError
Я не уверен, но я думаю, что они написаны на языках Ассамблеи. Проверьте [здесь] (http://en.wikipedia.org/wiki/Assembly_language) для получения дополнительной информации о сборке. –