Respostas:
Geralmente é simples C
. Os comandos ls
e pwd
vêm do GNU Coreutils
pacote em (a maioria?) Distribuições Linux (e talvez em outros sistemas). Você pode encontrar o código na página inicial .
Para coreutils
especificamente, você as constrói com as etapas usuais: após descompactar a fonte, emita:
./configure --prefix=/some/path
# type ./configure --help to get the available options
make
make install # could require root access depending on the path you used
Cuidado: a instalação de utilitários básicos, como aqueles sobre a cópia deles da sua distribuição, é uma má ideia . Use qualquer gerenciador de pacotes fornecido com o seu sistema para isso. Você pode instalar em um prefixo diferente (instalar em algum lugar no diretório inicial é uma boa ideia, se você quiser experimentar).
Observe que, embora exista um cd
executável , o cd
que você utilizará na maioria das circunstâncias não é um executável separado. Ele deve ser um build-in do shell (caso contrário, não poderá alterar o diretório atual do shell - isso deve ser feito pelo próprio processo), portanto, ele é escrito no mesmo idioma do shell (o que geralmente C
também é).
Outros exemplos:
Você pode encontrar muitos outros online.
Apenas para adicionar um pouco mais à resposta de Mat, embora o Unix os implemente como programas independentes, muitos comandos também são implementados dentro bash
(para evitar que seja necessário gerar um novo processo), consulte a bash
página do manual para obter mais detalhes ou dê uma olhada no shell -builtin tag.
bash
também está escrito em C
Pode ser interessante notar que esses comandos não precisam ser escritos em C - de fato, várias distribuições de mini linux usam lua
implementações desses e de outros.
cd
deve ser um shell integrado para funcionar de maneira eficaz.