Quais idiomas são usados ​​para criar comandos do Unix?


Respostas:


26

Geralmente é simples C. Os comandos lse pwdvêm do GNU Coreutilspacote em (a maioria?) Distribuições Linux (e talvez em outros sistemas). Você pode encontrar o código na página inicial .

Para coreutilsespecificamente, 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 cdexecutável , o cdque 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 Ctambém é).

Outros exemplos:

  • pwdFonte OpenSolaris .
  • FreeBSD ls

Você pode encontrar muitos outros online.


5

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 bashpágina do manual para obter mais detalhes ou dê uma olhada no 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 luaimplementações desses e de outros.


2
Bem bash, ou qualquer outra boa concha.
— Rds

11
Observe também que alguns comandos, como cddeve ser um shell integrado para funcionar de maneira eficaz.
— AProgrammer
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.