GNU/Linux >> Znalost Linux >  >> Linux

Jak otestovat shodu skriptů Shell s Posix?

Vzhledem k tomu, že POSIX je nejblíže společnému standardu mezi všemi uniicemi, zajímá mě, zda existuje shell, který jej výhradně podporuje. Zatímco většina moderních shellů poskytuje podporu pro POSIX (a bude bez problémů spouštět skripty vyhovující POSIX), neodvádějí dobrou práci při poukazování na funkce, které nejsou kompatibilní.

Existuje nějaký shell, který implementuje pouze POSIX a POSIX takovým způsobem, že by vyvolal chybu pro jakoukoli nevyhovující funkci?

UPRAVIT Chci objasnit, že se neptám na obecné tipy pro psaní přenosných shellových skriptů. Související otázka zmíněná v komentářích to již pokryla. Napadla mě tato otázka, když jsem zjistil, že bash--posix možnost, ale jen proto, abych zjistil, že to ovlivňuje pouze některá inicializační chování, což není přesně to, co hledám.

Přijatá odpověď:

Bohužel „přenosné“ je obvykle silnější požadavek než „vyhovující POSIX“ pro skripty shellu. To znamená, že napsat něco, co běží na jakémkoli POSIX shellu, není příliš těžké, ale dostat to, aby to běželo na jakémkoli reálném shellu, je těžší.

Můžete začít instalací všech shellů ve správci balíčků, zejména debianu posh zní to jako to, co chcete (Policy-compliance Ordinary SHell). Politika Debianu je POSIX s několika výjimkami (echo -n zadané, local …).

Kromě toho však testování musí pokrýt několik shellů (zejména /bin/sh) na řadě platforem. Testuji na Solaris (/bin/sh a xpg4/sh) a BSD. AIX a HP-UX jsou velmi kompatibilní a nezpůsobují problémy. bash je malý vlastní svět.

Doporučil bych průvodce Autoconf k přenosnému shellu, který je naprosto skvělý a ušetří spoustu času. Velké kusy jsou zastaralé, ale to je v pořádku; pokud vás to nezajímá, jednoduše přeskočte TruUnix a Ultrix a tak dále!


Linux
  1. Existují konvence pojmenování proměnných ve skriptech Shell?

  2. Jak otestovat, jaký Shell používám v terminálu?

  3. Jak zrušit kořenová oprávnění ve skriptech Shell?

  1. Jak vytvořit prostředí Clean Shell pro dočasné použití?

  2. Jak spouštět skripty Pythonu ze shellu

  3. Jak zopakovat nový řádek ve skriptech Bash Shell

  1. Co jsou Shell Scripts? Jak vytvořit Shell skripty?

  2. Jak nainstaluji/vytvořím vlastní výzvu pro rybí skořápku?

  3. Jak se Linux vypořádává se skripty shellu?