2013-09-27 2 views
7

Есть много команд оболочки, какКоманды оболочки написаны на каком языке?

Ls, компакт-диск, кошки и т.д.

какой язык программирования используется при написании этих команд? Как они скомпилированы?

Мое понимание ::

Shell is a program which takes command; ** does this mean that it interprets those commands(like ls is interpreted by shell program)?** 

еще один вопросы, на каком языке программа Shell написана в?

Спасибо!

+0

Я новичок и очень запутался. Это может объяснить мне намного лучше. – CODError

+0

Я не уверен, но я думаю, что они написаны на языках Ассамблеи. Проверьте [здесь] (http://en.wikipedia.org/wiki/Assembly_language) для получения дополнительной информации о сборке. –

ответ

4

Большинство основных коммунальных услуг в Linux написаны в C .Это и может проверить в busybox source code, который поддерживает большинство основных утилиты командной Linux, написанные в C. Так команда, как LS, компакт-диск ... и т.д. в c

Как оболочка интерпретирует проверить в ссылке ниже

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

http://www.math.iitb.ac.in/resources/manuals/Unix_Unleashed/Vol_1/ch08.htm

+0

Спасибо! Статья кажется очень хорошей и простой для понимания работы ядра и оболочки. – CODError

+0

Если вы хотите понять, как работают команды, например, ls u может проверить код 'busy box source-code' –

+0

Я узнаю о {busy box source-code}. Но если это возможно, не могли бы вы немного объяснить. – CODError

5

Эти программы в основном написаны на языке программирования C, как и в ядре linux.

+2

И вот исходный код: http://lingrok.org/xref/coreutils/src/ – Jojo

+0

В соответствии с моим пониманием команды могут быть переданы на языке программирования Shell, например Bash. Хотя программы Shell (например, Bash) находятся на языке C (не уверен, что это может быть язык сборки). – CODError

1

Программы представляют собой обычный исполняемый файл, написанный на любом языке (в основном C).

Оболочка принимает введенную команду, которая представляет собой только строку. Затем он ищет определенные последовательности символов, которые имеют особое значение для оболочки, такие как переменные среды, которые являются $, за которым следует слово или переадресация, которые являются >, за которым следует путь. После того, как эта подстановка была предварительно сформирована, у нее есть строка, которая разбивается на пробелы, чтобы сгенерировать имя исполняемого файла и параметры. Затем оболочка будет искать исполняемый файл в списке каталогов в переменной окружения PATH. Затем оболочка использует системные вызовы для создания процесса из исполняемого файла с параметрами.

Например, чтобы выполнить команду ls $HOME оболочка будет сначала признать, что $HOME является переменной окружающей среды и заменить его на его значение в этом случае /home/user оставляя команду ls /home/user. Затем он разделяет команду на пробел, чтобы получить исполняемое имя ls и параметр /home/user. Оболочка находит первый исполняемый файл, который соответствует ls обычно /bin/ls. Затем он использует эфирные вызовы spawn()/posix_spawn() или fork() и exec() для создания нового процесса.

+0

Пожалуйста, объясните больше! давая пример команды. объясните ниже: -подробные переменные (которые являются именем пользователя и т. Д.) -генерирование исполняемых файлов и параметров -использование системных вызовов для создания процесса – CODError

Смежные вопросы