Я читаю статью о выполнении команд в оболочке bash. В параграфе, касающемся встроенных команд оболочки, есть утверждение:

Когда имя встроенной команды используется в качестве первого слова простой команды, оболочка выполняет команду напрямую, без создания нового процесса.

Может сб. объясните мне утверждение, потому что это так ясно для меня. Пожалуйста, приведите несколько примеров, если Вы можете?

2 ответа2

2

Большинство команд GNU/Linux на самом деле являются исполняемыми файлами (например, ls и cat ). Когда вы печатаете

touch 'Hello World.txt'

touch программа будет запущена в новом процессе, независимо от вашего процесса Bash.

Когда такая программа выполняется, создается новый процесс


Однако встроенные команды выполняются самой оболочкой. Например,

echo 'Hello world!'

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

1

Dir, CD, MD и многие другие команды содержатся в command.com или cmd.exe (для более новых операционных систем Windows), поэтому они не имеют своих собственных файлов, поэтому при их запуске новый процесс не создается, так как интерпретатор команд уже пробеги.

Пример:

C:\> CD Windows - сделает C:\Windows вашим текущим каталогом, а команда не создаст новый процесс.

C:\> Xcopy . D: - сделает копию, но будет создан новый процесс под названием Xcopy, потому что Xcopy является независимым файлом.

Это похоже на Linux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .