Os comandos do UNIX são divididos em comandos internos (integrados) e externos por vários motivos importantes relacionados à eficiência, segurança e design do sistema:
*
Eficiência: Os comandos internos fazem parte do próprio shell (por exemplo, `Bash`,` zsh`). Eles são compilados diretamente no executável do shell, o que significa que o shell não precisa gastar tempo pesquisando no sistema de arquivos por sua localização. Isso torna sua execução significativamente mais rápida que os comandos externos. Comandos simples como `cd`,` pwd`, `echo` e` exit` são candidatos perfeitos para esta otimização.
*
Segurança: Os comandos internos podem ser mais fortemente controlados pelo shell. Isso permite melhores verificações de segurança e evita certas atividades maliciosas. Os comandos externos, por outro lado, precisam ser localizados e executados, introduzindo uma vulnerabilidade potencial se um programa malicioso for disfarçado de comando legítimo.
*
Flexibilidade e manutenção: A separação permite modularidade. Comandos externos são executáveis separados residindo nos diretórios especificados pela variável de ambiente `path` do shell. Isso permite atualizações mais fáceis, adição de novos comandos e remoção de comandos obsoletos sem recompilar todo o shell. Você pode adicionar facilmente nova funcionalidade simplesmente instalando novos executáveis.
*
Gerenciamento de recursos: Os comandos internos geralmente têm uma sobrecarga mais baixa porque não exigem criação de processos separada para execução. Comandos externos, por outro lado, criam um novo processo, levando ao aumento do consumo de recursos (memória e tempo da CPU). Essa diferença é particularmente perceptível ao lidar com um grande número de comandos.
*
Gerenciamento de espaço para nome: Os comandos internos têm um espaço de nome dedicado dentro do shell. Os comandos externos têm seu próprio espaço para nome e podem precisar de um gerenciamento cuidadoso para evitar conflitos. A divisão garante um melhor controle de namespace e reduz as possíveis colisões de nomeação.
Em suma, a divisão fornece um equilíbrio entre velocidade, segurança, flexibilidade e gerenciamento de recursos. Os comandos internos lidam com tarefas simples e frequentes com eficiência, enquanto os comandos externos fornecem uma extensa funcionalidade e manutenção.