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.