Quais são os comandos padrão disponíveis em todas as distribuições baseadas em Linux?

35

Eu gostaria de saber quais são os comandos padrão disponíveis em todos os sistemas Linux.

Por exemplo, se você pegar um debian / ubuntu / redhat / suse / arch / slackware etc, você sempre encontrará comandos como:

cd, mkdir, ls, echo, grep, sed, awk, ping, etc.

Eu sei que alguns dos comandos mencionados são construídos em shell, mas outros não, mas eles ainda estão sempre lá (com base no meu conhecimento e experiência até agora).

Por outro lado, comandos como gawk, parted, traceroute e outros comandos famosos não são instalados por padrão em diferentes distribuições Linux.

Eu fiz pesquisas na web diferentes, mas não encontrei uma resposta direta para isso.

O objetivo é que eu gostaria de criar um script de shell e fazer algumas verificações de integridade se os comandos usados no script estiverem disponíveis no sistema. Caso contrário, deverá solicitar ao usuário que instale os binários necessários.

    
por Vangelis Tasoulas 22.04.2012 / 16:53

3 respostas

37

Infelizmente, não há garantia de que algo esteja disponível.

No entanto, a maioria dos sistemas terá GNU coreutils . Isso sozinho fornece cerca de 105 comandos. Provavelmente você pode confiar naqueles, a menos que seja um sistema embarcado, que pode usar o BusyBox .

Você provavelmente também pode confiar no bash , cron , GNU findutils , GNU grep , gzip , iputils , man-db , module-init-tools , net-tools , passwd ( passwd ou sombra ), procps , tar , e util-linux .

Note que alguns programas podem ter algumas diferenças entre distribuições. Por exemplo, /usr/bin/awk pode ser gawk ou mawk . /bin/sh pode ser traço ou bash no modo POSIX . Em alguns sistemas mais antigos, /usr/bin/host não tem a mesma sintaxe que o Versão do BIND , por isso, talvez seja melhor usar dig .

Se você está procurando por alguns padrões, o Linux Standard Base define alguns programas comumente encontrados , mas nem todas as distribuições afirmam estar em conformidade com o padrão, e outras só o fazem se você instalar um pacote opcional de compatibilidade com LSB. Como um exemplo disso, alguns sistemas que vi não vêm com lsb_release em uma instalação padrão .

Além disso, a lista de comandos padronizada pelo POSIX pode ser útil.

Outra abordagem para o seu problema é empacotar seu script usando as ferramentas de empacotamento de cada distribuição (por exemplo, RPM para Red Hat, DEB para Debian, etc.) e declarar a dependência de quaisquer outros programas ou pacotes que você precisar. É um pouco trabalhoso, mas significa que os usuários verão uma mensagem de erro mais amistosa, dizendo não apenas o que está faltando, mas quais pacotes eles precisam instalar.

Mais informações:

por 13.04.2017 / 14:36
7

Em sistemas Linux não embarcados, você geralmente pode contar com a maioria dos utilitários GNU:

mais o pacote util-linux e o suite de processos . Observe que /bin/sh nem sempre é bash, pode ser um shell com menos recursos, como um dos vários garfos de ash .

A Base padrão do Linux define um conjunto de utilitários comuns com recursos esperados em todos os sistemas em conformidade. Você também pode esperar a maioria dos utilitários especificados por POSIX . Uma exceção notável é pax , que não faz parte da instalação padrão de muitas distribuições.

Se você quiser manter as coisas simples, solicite a instalação de um pacote lsb_release . Muitas distribuições têm esse pacote que atrai todas as dependências exigidas pelo LSB.

Em um sistema embarcado, todas as apostas estão desativadas. Sistemas Linux embarcados geralmente rodam BusyBox , mas muitos utilitários e recursos são opcionais, então há muito pouco que você pode ter certeza de obter.

    
por 23.04.2012 / 02:34
6

Existe um conjunto de comandos, a maioria, se não todas, as distribuições Linux, e também as distribuições Unix fornecerão. Estes são os comandos obrigatórios especificados pelo padrão POSIX .

A maioria dos comandos citados ( cd , mkdir , ls , echo , grep , sed , awk , etc.) são dele. A exceção sendo ping como WhiteWinterWolf comentou corretamente.

    
por 22.04.2012 / 23:27