Sfortunatamente non c'è alcuna garanzia che qualcosa sia disponibile.
Tuttavia, la maggior parte dei sistemi avrà coreutils GNU . Questo da solo fornisce circa 105 comandi. Probabilmente puoi fare affidamento su quelli a meno che non sia un sistema incorporato, che potrebbe invece utilizzare BusyBox .
Probabilmente puoi anche fare affidamento su bash , cron , GNU findutils , GNU grep , gzip , iproute2 , iputils , man-db , module-init-tools , net-tools , passwd ( passwd o shadow ), procps , tar e util- Linux .
Si noti che alcuni programmi potrebbero presentare alcune differenze tra le distribuzioni. Ad esempio /usr/bin/awkpotrebbe essere gawk o mawk . /bin/shpotrebbe essere trattino o bash in modalità POSIX . Su alcuni sistemi meno recenti, /usr/bin/hostnon ha la stessa sintassi della versione BIND , quindi potrebbe essere meglio usare dig .
Se stai cercando alcuni standard, Linux Standard Base definisce alcuni programmi comunemente trovati , ma non tutte le distribuzioni dichiarano di essere conformi allo standard, e alcuni lo fanno solo se installi un pacchetto di compatibilità LSB opzionale. Ad esempio, alcuni sistemi che ho visto non vengono forniti con lsb_releaseun'installazione predefinita.
Inoltre, potrebbe essere utile l' elenco dei comandi standardizzati da POSIX .
Un altro approccio al tuo problema è impacchettare lo script usando gli strumenti di impacchettamento di ogni distribuzione (ad esempio RPM per Red Hat, DEB per Debian, ecc.) E dichiarare una dipendenza da qualsiasi altro programma o pacchetto di cui hai bisogno. È un po 'di lavoro, ma significa che gli utenti vedranno un messaggio di errore più amichevole, dicendo loro non solo ciò che manca, ma quali pacchetti devono installare.
Ulteriori informazioni: