Il minimo che puoi aspettarti di trovare su qualsiasi sistema unix che non sia antico o incorporato è POSIX/Singe UNIX. Nello specifico, tutti gli unice attuali sono per lo più conformi a POSIX:2004, a.k.a. Single Unix issue 6. Questo ti dà sh, sed e awk come linguaggi di programmazione.
Se sono installati pacchetti di sviluppo (che spesso non sono su un server), puoi eseguire lo sviluppo con cc (compilatore C), lex, yacc, make; ma a parte make, questi non sono utili sulle macchine su cui distribuirai la tua applicazione, solo sulle macchine di sviluppo.
Se presumi Linux, la maggior parte delle distribuzioni segue in una certa misura la Linux Standard Base. L'LSB va oltre POSIX. La specifica di base include un runtime C con supporto per multithreading, NSS, PAM, ncurses, libz, SSL e alcune altre librerie. LSB non richiede bash, solo un POSIX sh che potrebbe essere ash o ksh, ma in pratica la maggior parte delle distribuzioni Linux non integrate fornisce bash come parte dell'installazione predefinita. La specifica dei linguaggi include Perl e Python. In pratica, non tutte le distribuzioni rendono il supporto LSB completo parte della loro installazione predefinita, ma in genere puoi sostenere che se è specificato da LSB (ma non nella specifica desktop LSB, ovviamente), dovrebbe essere installato su un server Linux .
Su altri sistemi, Perl è molto spesso disponibile. Python non è così comune ma sta guadagnando popolarità. Puoi praticamente contare su bash o pdksh (ma non sempre; IIRC NetBSD ha solo ash nella sua installazione predefinita). Per i linguaggi compilati, troverai sempre un runtime C e quasi sempre troverai un runtime C++.
Non puoi presumere che Perl o Python siano installati, anche se spesso lo sono. Ad esempio, le distribuzioni simili a redhat di solito installano Python, ma altre distribuzioni normalmente no.
Dovresti scegliere come target distribuzioni specifiche se questo è un problema, altrimenti dovrai crearne uno tuo (ad es. Python) e spedirlo tu stesso:questo è l'unico modo per garantire che sia disponibile. In realtà, se stai scrivendo un software non banale che deve essere portabile su molte distribuzioni, è probabilmente necessario spedire il tuo Python.