Protoze prevazna vetsina shellovych skriptu jsou napsana proto, aby je autor poustel na svem systemu a portabilita tedy neni pozadovana. Nehlede na to, ze by se pak uzivatel musel zbytecne omezovat na moznosti POSIXoveho shellu.
Nevidim duvod, proc nepsat bash, je k dispozici pro vsechny POSIXove systemy, pro jine neni ani bash ani sh, takze v tom rozdil neni. V kazdem pripade nejhorsi psát sh-nekompatibilní skripty a v hlavicce uvadet /bin/sh ...
Pri psani scriptu na vlastni pocitac je to mozna jedno, ale v kazdem pripade jak pouziti /bin/bash tak pouziti /bin/sh s sh-nekompatibilnim scriptem je spatne. /bin/bash totiz funguje POUZE na linuxu. Solaris nebo *BSD maji bash v /usr/local/bin/bash (a navic neni jistota jestli ho vubec maji). To mozna i ten sh nekomaptibilni script je lepsi...
Naproti tomu /usr/bin/env je pod *BSD, Solaris i Linuxem dostupny stejne.
Solaris - od solarisu 9 (resp dokonce od pozdejsich releasu Solarisu 8) je bash defaultne v /usr/bin. V tom problem neni.
Zachranne skripty - /bin/sh a striktni Bourne-shell syntaxe. Musi chodit i v single-user. Ale tam to je vzdycky pro jedinou platformu.
Portabilni skripty - /usr/bin/ksh. Na komercnich unixech je vsude, Linux/BSD neni problem dodat (a bash to taky zvladne, btw). Problemy nebyvaji ani tak se skriptem, jako spis s radikalne odlisnymi vysledky systemovych utilit. ps, df, ls, grep, awk... Ze vam to chodi na linuxu nic neznamena, na HP-UXu to selze uplne, na Solarisu zcasti, na AIXU to udela neskutecne veci, na dalsi platforme to neco dela ale nevite, co... Takze slusny shell skriptar se stejne nevyhne zjistovani platformy a nastavovani prostredi na posixove nebo aspon na co nejmene od nej odchylne (hledejte svr4 nebo xpg4 adresare, nawk apod).
Ja zase nevidim duvod psat bash, dokud skript nepouziva vymoznosti bash. Pokud je skript komatibilni se sh, preferuji /bin/sh. Kazdy sveho stesti strujcem... ;-)