cd
é um shell embutido . Então é parte do próprio shell, não um executável separado.
Existem basicamente duas classes de builtin.
- Particulares especiais estão intimamente ligados ao shell, e não podem ser implementados independentemente ou não porque isso não faria sentido funcional (eles são principalmente relacionados ao controle de shell). Eles são chamados de "especiais" porque têm uma semântica específica de tratamento de erros e atribuição de variáveis .
-
Os builtins regulares são normalmente implementados no shell por motivos de desempenho, porque eles manipulam internos do shell ( por exemplo,
cd
) ou porque são tecnicamente mais fáceis. Em alguns casos, um builtin regular também pode existir em forma não interna. Um exemplo do último caso éecho
, que é implementado em todos os shell modernos, mas também existe, principalmente por razões históricas, como/bin/echo
.
Um motivo adicional para a criação de funções críticas é que ele garante que a funcionalidade principal continue acessível, mesmo que algo catastrófico ocorra em seu sistema. Por exemplo, isso pode ser importante se as bibliotecas compartilhadas ficarem corrompidas ou inacessíveis, se você perder o acesso a /bin
ou /sbin
ou se o sistema se tornar limitado por recursos de uma maneira que não permita a execução de outros executáveis.