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: