Normalmente, é normal C . Os comandos ls e pwd vêm do pacote GNU Coreutils em (mais?) Distribuições Linux (e talvez alguns outros sistemas). Você pode encontrar o código na página inicial .
Para coreutils especificamente, você os constrói com as etapas habituais: depois de descompactar a origem, problema:
./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
Tenha cuidado - instalar utilitários de base, como aqueles sobre a cópia da sua distribuição, é uma má ideia . Use o gerenciador de pacotes do seu sistema para isso. Você pode instalar um prefixo diferente (instalar em algum lugar no diretório inicial é uma boa ideia se você quiser experimentar).
Observe que, embora haja um cd executável , o cd que você usará na maioria das circunstâncias não é um executável separado. Tem que ser um shell build-in (senão não poderia mudar o diretório atual do shell - isso tem que ser feito pelo próprio processo), então ele é escrito na mesma linguagem que o shell (que geralmente é C também ).
Outros exemplos:
Você pode encontrar muito mais desses sites on-line.