( uid_2716 | 2012. 01. 21., szo – 15:47 )

Az interpreter hashbang általi kijelölése nem hordozható (ld. SUS).

Az egyetlen biztos dolog, amit tehetsz, az a dokumentáció -- levenni az exec jogot a scriptről, eltávolítani a hashbang-et, ezáltal rákényszerítni a felhasználót, hogy kézzel adja meg az interpretert. (Azaz a futtatáshoz "bash script", vagy "dash script", vagy SUS-kompat. környezet beállítása után "sh script" parancs kell.) Hogy konkrétan mivel futtassa, azt meg mondd meg neki a dokumentációban.

A C shell kiment a divatból; ha nem így történt volna, sokkal kisebb kavarodást tudnának ma okozni a ksh/bash/dash apró eltérései. Ui. a C shell azonnal pofára esik az utóbbiak script-jein (és vice versa), tehát (úgy saccolom) az emberek nem is nagyon próbálkoznának egy biztos közös nevező megkeresésével. Simán megmondanák, melyik shell-hez készült a script és kész.

(Ezen belül természetesen a SUS shell nyelvét érdemes leginkább választani, mert azt fogja tudni a legtöbb gyártó ilyen vagy olyan shell-je (a megfelelő beállításokkal) értelmezni.)

Összefoglalva: ha szükséged van bash-specifikumokra, akkor írd abban, és követeld meg a doksiban. Ha nincs, akkor írd a shell script-et POSIX/SUS szerint (linkek alant), és követeld meg a felhasználótól az ő adott POSIX shell-jével való végrehajtást. (linyukszon ez leginkább dash, esetleg bash --posix.)

SUSv2: shell command language, UNIX 98 tanúsított rendszerek listája

SUSv3: shell command language, UNIX 03 tanúsított rendszerek listája

SUSv4: shell command language

Alapvetően a SUSv3-ra lőnék; GNU/Linux-oknak elvileg tudniuk kell (dash-sal vagy bash --posix-szal), ill. a FreeBSD is arra figyel.