После того, как вы вошли в систему, операционная система запускает командную оболочку, и вы можете вводить команды. Приведем простой пример. Пусть Лэрри входит в систему и ожидает приглашения (prompt) системы.
mousehouse login: larry Password: пароль пользователя larry Welcome to Mousehouse! /home/larry\#Последняя строчка этого текста является приглашением командной оболочки. Появление этого приглашения свидетельствует о том, что оболочка готова воспринимать команды. Ниже будет объяснено, что приглашение само по себе значит.
А теперь попробуем заставить систему сделать кое-что забавное:
/home/larry\# make love make: *** No way to make target `love'. Stop. /home/larry\#Как оказывается, make является именем некоторой системной программы, и оболочка исполнила эту программу, когда ей дали такую команду. К сожалению, в этот раз операционной системе не все в этой команде понравилось.
Итак, что же такое команда? Обратимся к приведенному выше примеру. Командой является первое слово в командной строке -- "make"; это называется именем команды. Все остальное в командной строке воспринимается в качестве аргументов этой команды. В следующем примере:
/home/larry\# cp foo barимя команды -- "cp", а аргументы -- "foo" и "bar".
Когда вы вводите команду, оболочка производит несколько действий. Во-первых, она проверяет, является ли команда внутренней для оболочки. Внутренней командой называется команда, про которую оболочка сама по себе знает, как ее исполнять. Имеется несколько внутренних команд оболочек, и они будут рассмотрены ниже. Также оболочка проверяет, не является ли команда псевдонимом (alias) другой команды. Если результат всех проверок отрицательный, то оболочка ищет программу с этим именем на диске. Если программа находится, оболочка ее исполняет, передавая ей аргументы, введенные в командной строке.
В первом из наших примеров оболочка искала программу под названием make, нашла ее и запустила с аргументом love. На самом деле make -- это программа, которая часто используется для компилирования крупных программ, и в качестве аргумента у нее используется имя программы, которую нужно компилировать. В данном случае, отдавая команду "make love", мы отдали приказ компилятору make компилировать программу love. Поскольку компилятор make не нашел программу с таким именем, он выдал сообщение об ошибке (которое нам может показаться смешным) и вернул нас к приглашению оболочки.
Посмотрим теперь, что будет, если оболочка не сможет найти программу с введенным нами именем. Введем следующую команду:
/home/larry\# eat dirt eat: command not found /home/larry\#Все очевидно: оболочка не смогла найти программу с данным ей именем (здесь -- "eat") и выдала сообщение об ошибке. Это сообщение будет часто появляться, если вы будете неправильно вводить команду с клавиатуры (например, если бы в самом первом примере вы набрали "mkae love" вместо "make love").