Executando comandos no shell

0

Estou lendo o artigo sobre executando comandos pelo shell bash. No parágrafo referente aos comandos internos do shell, há uma declaração:

When the name of a built-in command is used as the first word of a simple command, the shell executes the command directly, without creating a new process

Pode sb. me explique a afirmação porque é muito claro para mim. Por favor, dê alguns exemplos se você puder?

    
por Mulligan 12.06.2017 / 12:07

2 respostas

1

Dir, CD, MD e muitos outros comandos estão contidos em command.com ou cmd.exe (para sistemas operacionais Windows mais recentes), portanto eles não possuem seus próprios arquivos, portanto, nenhum novo processo é criado ao executá-los desde o intérprete de comando já é executado.

Exemplo:

C: \ > CD Windows - tornará C: \ Windows seu diretório atual e o comando não criará um novo processo .

C: \ > Xcopy . D: - fará uma cópia, mas um novo processo chamado Xcopy será criado porque o Xcopy é um arquivo independente.

É semelhante para o Linux.

    
por 12.06.2017 / 12:16
2

A maioria dos comandos GNU / Linux são realmente arquivos executáveis ( ls e cat , por exemplo). Quando você digita

touch 'Hello World.txt'

o programa touch será iniciado em um novo processo, independente do seu processo de Bash.

When such a program is executed, a new process is created

No entanto, os comandos internos são executados pelo próprio shell. Por exemplo,

echo 'Hello world!'

será executado pela instância do Bash em que você está digitando. Isso faz sentido para muitos outros comandos internos, especialmente cd , pois um processo só pode alterar seu próprio diretório de trabalho.

    
por 12.06.2017 / 12:17