ã¯ããã«
Linux / Unix ãã¿ãŒããã«ãã䜿ãæã«äœ¿çšãããœãããŠã§ã¢ãã·ã§ã«ã§ããã·ã§ã«ã®åœ¹ç®ã¯ CLI ããŒã¹ã®ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãšããŠãŠãŒã¶ãŒããã®æäœã§ããã°ã©ã ïŒäž»ã« CLI ã³ãã³ãïŒã®å®è¡ã仲ä»ãããããã®æäœãèªååããããã®ã·ã§ã«ã¹ã¯ãªãããå®è¡ããæ©èœãæã£ãŠããŸããçŸåšæã䜿çšãããŠããã·ã§ã«ã¯ GNU ãããžã§ã¯ããéçºããŠãã bash ã§ãããOS ã«ãã£ãŠç°ãªãããŸããŸãªã·ã§ã«ã䜿ãããŠããŸãã
ã·ã§ã«ã®æäœéã®ä»æ§ã¯ POSIX ã§æšæºåãããŠããŸãããã®æšæºèŠæ Œã«æºæ ããŠããã·ã§ã«ã¯ãPOSIXïŒæºæ ïŒã·ã§ã«ããšäžè¬çã«åŒã°ããŠããŸããã·ã§ã«ã¯å€§å¥ãããšãPOSIX ã·ã§ã«ããšãPOSIX ã·ã§ã«ä»¥å€ãã«åããããŸããUNIX å šçææä»£ããã€ãŠã·ã§ã«ããUNIX ã·ã§ã«ããšåŒã°ããŠããé ã¯ãB ã·ã§ã«ããšãC ã·ã§ã«ããšããåãæ¹ããããŸããããããã¯ãã¯ãéå»ã®ãã®ãšèããŠè¯ãã§ããããã·ã§ã«ã®äžçãå°ããã€å€ãã£ãŠããŸããè¿ããã¡ã« POSIX æšæºèŠæ Œãæ¹èšãããäºå®ã§ãã
ãã®èšäºã§ã¯äž»èŠã·ã§ã«ã®æŽå²ãçš®é¡ãPOSIX ãã·ã§ã«ã«ã©ã®ããã«é¢ãã£ãŠããã®ãããããŠã·ã§ã«ã®çŸåšãšéå»ã€ããŠè©³ãããŸãšããã·ã§ã«ã®æªæ¥ã«ã€ããŠã®ç§ã®èããè¿°ã¹ãŠããŸãããŸããç§»æ€æ§ãé«ããã¹ãŠã®ç°å¢ã§åãã·ã§ã«ã¹ã¯ãªãããæžããã人ãã·ã§ã«ã¹ã¯ãªããã POSIX ã³ãã³ãã®ç§»æ€æ§ã«ã€ããŠå°ã£ãŠãã人ãPOSIX æšæºèŠæ Œã«äžæºããã人ãžã®çè§£ã®å©ãã«ãªãã§ããããã·ã§ã«ã¹ã¯ãªããã¯ä»ã®äžè¬çãªèšèªã«çœ®ãæããããšãäžå¯èœãªãã®ã§ããããã¯æŽå²ã蚌æããŠããŸãããªãã°ã·ã§ã«ãçè§£ãè¯ããã®åãå ¥ããŠæªæ¥ãæ¹åããŠãããã°ãªããŸããã
ãããããããã®èšäºã®å 容ããä»ã®èšäºãªã©æ¯èŒããŠéãããšãèšã£ãŠãããšæãããããããŸããããããã¯ææ°ã®æ å ±ãçµã¿èŸŒãã§ã¢ããããŒãããŠããããã§ãã倧åŠãªã©ã®æè²æ©é¢ãå ¬éããŠããæ å ±ã§ããïŒã ããããïŒïŒå 容ãå€ãããšãå€ãã§ãããã£ãšããã®èšäºã«ééãããªããšããä¿èšŒã¯ãããŸããã
ã·ã§ã«ã®çš®é¡ãšç³»çµ±å³
äžèšã®å³ã¯ What does it mean to be "sh compatible"? ã® unix-shells.svg ãåèã«ç§ãæ°ãã«æžãçŽãããã®ã§ãã
äž»èŠãª POSIX æºæ ã·ã§ã«ã®ç¹åŸŽãšææ°çã®ãªãªãŒã¹æ¥
- ash - Almquist Shell ç³» ïŒFreeBSD sh, NetBSD shïŒ
- BSD ç³» Unix ã§å€ãæ¡çšãããã·ã§ã«ã§å 㯠Bourne ã·ã§ã«ã®ã¯ããŒã³ãæ¡åŒµæ©èœãå°ãªãéã
- FreeBSD ã NetBSD ã«çµã¿èŸŒãŸããŠããä»ã® OS ãžã®ç§»æ€ã¯ïŒããããïŒè¡ãããŠããªã
- ææ°çã¯ããããã® OS ã®ãªãªãŒã¹æ¥
- [è£è¶³] åæã® ash 㯠POSIX æºæ ã§ã¯ãªã BusyBox ash ã¯æ¡åŒµæ©èœã ash ç³»ãšããŠã¯å€ã
- dash - Debian Almquist shell
- Debian Linux ã«ç§»æ€ããã ashãash ãšåæ§ã«æ¡åŒµæ©èœãå°ãªãéã
- Debian ç³» Linux ã§äœ¿ãããŠããã·ã§ã«ã ãä»ã® OS ã«ãç§»æ€ãããŠãã
- ææ°ç㯠0.5.11.5 ã§ 2021幎9æ ãªãªãŒã¹
- bash - Bourne Again Shell
- GNU ãããžã§ã¯ãã§éçºãããã·ã§ã«ãæ¡åŒµæ©èœã¯å€ãã ksh ã zsh ã»ã©å€ãã¯ãªã
- Linux ã§åºãæ¡çšãããããã»ãšãã©ã® OS ã«ç§»æ€ãããŠãã
- ææ°ç㯠5.2 ã§ 2022幎9æ ãªãªãŒã¹
- ksh - KornShell (ksh88, ksh93)
- 䞻㫠AT&T ã åçš UNIX ã§äœ¿ãããŠãã Bourne ã·ã§ã«ã®åŸç¶ã·ã§ã«ãæ¡åŒµæ©èœãå€ã
- å ã ã¯ãããã©ã€ãšã¿ãªã ããªãŒãã³ãœãŒã¹ã«ãªã£ãŠããã¯å€ãã® OS ã«ç§»æ€ãããŠãã
- ææ°ç㯠ksh93u+m 1.0.4 ã§ 2022幎10æ ãªãªãŒã¹
- [è£è¶³] OpenBSD ksh 㯠ksh93 ã§ã¯ãªã pdksh ïŒæ©èœçã«ã¯ ksh88 çžåœïŒ
- zsh - Z shell
- bashãkshãtcsh ã®æ©èœãåã蟌ãã 髿©èœãªã·ã§ã«ãæ¡åŒµæ©èœãå€ã
- å€ãã® OS ã«ç§»æ€ãããŠããã
/bin/shãšããŠã¯ïŒããããïŒäœ¿ãããŠããªã - ææ°ç㯠5.9 ã§ 2022幎5æ ãªãªãŒã¹
泚æ äžèšã®ã·ã§ã«ã¯çŸåšã¯ POSIX æºæ ã·ã§ã«ã§ãããéçºãå§ãŸã£ãåœå㯠POSIX æšæºååã§ãã POSIX æºæ ã§ã¯ãããŸããããŸã Bourne ã·ã§ã«ãïŒSchily Bourne Shell ãé€ãïŒ POSIX æºæ ã§ã¯ãããŸããã
ãB ã·ã§ã«ããC ã·ã§ã«ã ãšããåŒã³åã¯äœã ã£ãã®ãïŒ
ä»ã§ããã·ã§ã«ã¯ B ã·ã§ã«ç³» ãš C ã·ã§ã«ç³»ã®äºçš®é¡ã«åé¡ãããŸãããšãããããªèª¬æãèŠãããŸããããã®åŒã³åã¯ããæšãŠå»ãã¹ãã ãšæããŸãããã®åŒã³åãçãŸããã®ã¯ãããã UNIX å šçææä»£ã® 1980 ã 1990 幎代åæã ãšæããŸãããK ã·ã§ã«ããšããåŒã³åãèŠãããŸããash ã«å¯Ÿå¿ãããA ã·ã§ã«ãã¯äœ¿ã£ãŠãã人ãããªãã¯ãªããšèšã£ãæãã§ããããïŒ rcã·ã§ã«ã«å¯Ÿå¿ãããR ã·ã§ã«ãã¯å€åãªãããã§ããã
ãã®åŒã³åãæå³ããããšã¯äžæç¢ºã§ãB ã·ã§ã«ç³»ããC ã·ã§ã«ç³»ããšèšã£ãã«ããŽãªåãšããŠäœ¿ãããŠããå ŽåããããŸãããããããããæåã¯ãæ£åŒåç§°ãBorune ã·ã§ã«ããšããååãé·ãïŒãŸãã¯ã©ããã® UNIX ã§ bsh ãšããå¥åããã£ãïŒãã B ã·ã§ã«ãšããåŒã³åãçãŸãããã®ãããªåŒã³åã«ãªã£ãçç±ã¯ csh ã®æ£åŒåç§°ã C ã·ã§ã«ã ã£ãããã§ãããã
çãŸããåœå㯠C ã·ã§ã«ã«å¯Ÿã㊠B ã·ã§ã«ãšããç¥ç§°ããã£ãã ããšããåçŽãªè©±ã ã£ãã®ã ãšæããŸãããã®æµãã§æ°ãã«èªçãã KornShell (ksh) ã K ã·ã§ã«ãšåŒã°ãå§ããäžéšïŒïŒïŒã®äººã¯ BSD Unix ã§äœ¿ããã ash ã A ã·ã§ã«ãšåŒã³ãŸãããç§ã¯ãããã¯ïŒC ã·ã§ã«ãé€ããŠïŒå補ç¥èªã§ã¯ãªãããšæã£ãŠããŸãããšæã£ãŠããŸãããè±èªç wikipedia ã® Almquist shell (ash) ã«ã¯ãalso known as A Shell, ash and shããšæžãããŠããŸãããæµ·å€ã§ã B Shell ã§éããã®ã ãããïŒããŒãã
| ã·ã§ã«ã®ç¥ç§° | ã·ã§ã«ã®æ£åŒåç§° |
|---|---|
| B ã·ã§ã« | Bourne ã·ã§ã« (sh) |
| C ã·ã§ã« | C ã·ã§ã« (csh) |
| K ã·ã§ã«ïŒãŸãã«ããåŒã°ããããšãããïŒ | KornShell (ksh) |
| A ã·ã§ã«ïŒãŸãã«ããåŒã°ããããšãããïŒ | Almquist shell (ash) |
ãããããããšã«"åæã®" ash 㯠Bourne ã·ã§ã«ã®ã¯ããŒã³ãšããŠäœããããããBourne ã·ã§ã«ãšåãã ash ã sh ãšããã³ãã³ãåã§äœ¿ãããŸããããã€ãã Bourne ã·ã§ã«ã®åŸç¶ã·ã§ã«ïŒashãbashãkshãzsh ãªã©ïŒå
šãŠã B ã·ã§ã«ç³»ãšããã«ããŽãªã«ãªã£ãããã«æããŸããäžæ¹ã§ C ã·ã§ã«ãæ¹è¯çã® tcsh ãç»å Žãããã C ã·ã§ã«ç³»ãšããã«ããŽãªã«ãªããŸããã
| ã·ã§ã«ã®ã«ããŽãª | ã·ã§ã« |
|---|---|
| B ã·ã§ã«ç³» | Bourne ã·ã§ã«äºæã·ã§ã« ïŒash, dash, bash, ksh, pdksh, mksh, zshïŒ |
| C ã·ã§ã«ç³» | C ã·ã§ã«äºæã·ã§ã« (csh, tcsh äºã€ãããªã) |
ãããã§ãããçŸåš B ã·ã§ã«ã®é æåã§ãã Bourne ã·ã§ã«ã¯ã»ãšãã©äœ¿ãããŠããããBourne ã·ã§ã«äºæã®åŸç¶ã·ã§ã«ã¯ POSIX æºæ ã® POSIX ã·ã§ã«ãšãªããŸããããBourne ã·ã§ã«ãš POSIX ã·ã§ã«ã«ã¯å€ãã®ä»æ§ã®éããããããäžã€ã®ã«ããŽãªã«ããã®ã¯äžé©åã§ããC ã·ã§ã«ã¯ tcsh ã«çœ®ãæãããäºå®äžäžã€ã®ã·ã§ã«ãããªãã«ããŽãªã«ãããŸã§ããããŸããããŸãäžã€ã®ã·ã§ã«ãšããã®ãªãä»ã«ã fish ãªã©ç¬ç«ããã·ã§ã«ã¯ããã€ããããŸããåæã® ash 㯠Bourne ã·ã§ã«ã®ã¯ããŒã³ã§ããããåæã® ash ã¯ãã䜿ãããŠããããä»ãã ash ç³»ã¯ãã¹ãŠ ash ã®åŸç¶ã·ã§ã«ã§ãããPOSIX ã·ã§ã«ã«å€ãããŸããã
| ã·ã§ã«ã®ã«ããŽãª | ã·ã§ã« |
|---|---|
| B ã·ã§ã«ç³» 1 | Bourne ã·ã§ã«äºæã·ã§ã« ïŒBourne ã·ã§ã« ãšåæã® ashïŒ |
| B ã·ã§ã«ç³» 2 | Bourne ã·ã§ã«åŸç¶ã® POSIX ã·ã§ã«ïŒå€æ°ïŒ |
| C ã·ã§ã«ç³» | C ã·ã§ã«äºæã·ã§ã« (csh, tcsh äºã€ãããªã) |
| K ã·ã§ã«ç³»ïŒ | B ã·ã§ã«ç³» 2 ã®ãã¡ ksh é¢ä¿ïŒ |
| A ã·ã§ã«ç³»ïŒ | B ã·ã§ã«ç³» 2 ã®ãã¡ ash é¢ä¿ïŒ åæã® ash ã¯ïŒ |
çé¢ç®ã«åé¡ããããšãŸãšãŸããŸãããèŠããã« 30幎ã40幎åã«çãŸãããšæããããããã®åŒã³åã¯ãæéãçµã¡ãããŠã·ã§ã«ã®äžçã代ãã£ãããã«çŸå®ã«å³ããŠãããã人ã«ãã£ãŠã©ãããæå³ã§äœ¿ã£ãŠãããæç¢ºã§ã¯ãªããåéããåŒãèµ·ãããããåŒã³åãªã®ã§ãããããã£ãŠçŸåšã¯æ¬¡ã®ããã«åŒã¶ã®ãè¯ããšæããŸãã
| ã·ã§ã«ã®ã«ããŽãª | ã·ã§ã« |
|---|---|
| POSIX ã·ã§ã« | ash ç³»ãbashãkshãzsh ãªã© ïŒ/bin/sh ãšããŠã䜿ãããçŸåšã®äž»æµïŒ |
| ãã®ä»ã®ã·ã§ã« | Bourne ã·ã§ã«ãtcshãfish ãªã©ïŒããããã®ã·ã§ã«ã®ååã§åŒã¶ïŒ |
çŸåšã®ã·ã§ã«ã®ã«ããŽãªã¯äž»æµã® POSIX ã·ã§ã«ã®ã¿ã§ãæ¡ä»¶ã¯ POSIX ã«æºæ ããŠãããã©ããã§ããash ç³»ã¯å³å¯ã«èšããªãåæã® ash 㯠POSIX æºæ ã§ã¯ãªãã®ã§å«ã¿ãŸããïŒãåæã® ash ã®è©±ããã人ã¯ããªããšæããŸãïŒãããšã¯å šãŠãã®ä»ã®ã·ã§ã«ã§ããBourne ã·ã§ã«ã¯ Stephen R. Bourne ãéçºããæ¬ç©ã® Bourne ã·ã§ã«ã ããšããããšã§ãã
ããã§ POSIX ã·ã§ã«ã®ãã¡ ash ç³»ãšãã以å€ã®ã·ã§ã«ïŒbash, ksh, zsh ãªã©ïŒãåé¢ããããšæããããããŸãããash ç³»ã¯æ¡åŒµæ©èœãå°ãªãã·ã§ã«ã§ãã©ããåãããã«åããŠããããã«æããããã§ããããã ash ç³»ã§ãããªãã bash ã®æ¡åŒµæ©èœãåã蟌ã¿ã€ã€ãã Busybox ash ãšããäŸå€ãçŸããã®ã§ããã¯ã ash ç³»ã§ã²ãšãããã«ããããšã¯åºæ¥ãªããªããŸãããash ç³»ã®ã·ã§ã«ã§ãã FreeBSD shãNetBSD shãdashãBusyBox ash ãªã©ã¯ããããç¬ç«ããŠã¡ã³ããã³ã¹ãããŠããå¥ã®ã·ã§ã«ã§ããash ç³»ã ãããšãã£ãŠå šãŠåãããã«åãããã§ã¯ãããŸãããFreeBSD sh ãš NetBSD sh ã§ããå°ãããªãããéãããããŸãã
ã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ã«ã€ããŠ
çŸåšã®äž»æµã®ã·ã§ã«ã¯ãPOSIX ã·ã§ã«ããšããã«ããŽãªã«å«ãŸãããšæžããŸããããå šãŠã® POSIX ã·ã§ã«ã¯æ¡åŒµæ©èœãæã£ãŠããçŽç²ãª POSIX ã·ã§ã«ïŒPOSIX ã§æšæºåãããæ©èœã®ã¿ãå®è£ ããŠããã·ã§ã«ïŒãšãããã®ã¯ååšããŸããããŸã POSIX ã«æºæ ããã·ã§ã«å士ã§ãã£ãŠãå®è£ ã«ãã£ãŠåäœã«éãããããå®å šã«åãåäœãããã·ã§ã«ã¯äžã€ããããŸããã
ã§ã¯ãã¹ãŠã®ç°å¢ã§åäœããã·ã§ã«ã¹ã¯ãªãããæžãã«ã¯ã©ããããè¯ãã§ããããïŒ ããã¯ãã¹ãŠã®ç°å¢ãèæ ®ãåäœãã¹ãããããããããŸããããã¹ãŠã®ã·ã§ã«ãã³ãã³ãã®å®è£ ã«å¯Ÿå¿ããŠæžãã°ããã¹ãŠã®ç°å¢ã§åãã·ã§ã«ã¹ã¯ãªããã«ãªããŸãããæ®éã«æžã㊠ash ç³»ã®ã·ã§ã«ã§åãã°ãã¹ãŠã®ç°å¢ã§åãã·ã§ã«ã¹ã¯ãªããã«ãªããšãããããªããšã¯ãããŸãããç°å¢äŸåãæ¿ããã³ãã³ãïŒ= POSIX ã³ãã³ãã UNIX ã³ãã³ããçç±ã¯å®è£ ãå€ãããïŒã䜿ãã°ããã®ã³ãã³ãã®äºææ§ã«ã€ããŠãæ°ãé ããªããã°ãããŸãããã·ã§ã«ã¹ã¯ãªããã§ãã¹ãŠã®ç°å¢ã§åãããã«ããããšèããã®ã¯ãæéã®å²ã«éåžžã¯ã¡ãªããããªãã§ãããããã¡ãããªãã§ãã·ã§ã«ã¹ã¯ãªããã§æžããªã©ãšã¯èšã£ãŠããããå¿ èŠãªãã°ä»ã®èšèªã䜿ã£ãŠãã ããã驿驿ã§ã·ã§ã«ã¹ã¯ãªããã䜿ã£ãŠãã ããã
æ±çšããŒã«ãäœããããªããã¹ãŠã§åãããã«é 匵ãæå³ããããšæããŸãããããåäœç°å¢ãéå®ãããïŒéå®ãããããšãã§ããïŒãªãé 匵ãå¿ èŠã¯ãããŸããããã®ã·ã§ã«ã¹ã¯ãªããã¯æ¬åœã«ãã¹ãŠã®ç°å¢ã§åãããã«ããå¿ èŠãããã®ã§ããããïŒ ä»æŽå€ã Bourne ã·ã§ã«ãïŒPOSIX æºæ 以åã®ïŒUNIX System V ç°å¢ãèæ ®ããŠæžãå¿ èŠããããŸããïŒ Linux ãš macOS ã ãã§ååã§ã¯ãããŸãããïŒ macOS ã§åãããããšããŠããæ°ãã bash ãš GNU CoreUtils ãã€ã³ã¹ããŒã«ã Linux 颚ã®ç°å¢ãäœãã°ååã§ã¯ãããŸãããïŒ ããã€ããã sed ã awk ã®å®è£ ã«å¯Ÿå¿ããããã Perl ãã€ã³ã¹ããŒã«ããæ¹ãç°¡åã§ã¯ãããŸãããïŒ åäœç°å¢ã察å¿ãããã·ã§ã«ãã³ãã³ãã®çš®é¡ãå€ããã°å€ãã»ã©å¯Ÿå¿äœæ¥ã倧å€ã«ãªãã®ã¯èªæã§ããå®è£ ãããã€ããã£ãŠå¯Ÿå¿ããã®ã倧å€ãªãã察å¿ããç°å¢ãã·ã§ã«ãäŸåããã³ãã³ããæžããã°ããã®ã§ãã
ã·ã§ã«ã¹ã¯ãªãã㯠POSIX ã§æšæºåãããæ©èœã®ã¿ã䜿ã£ãŠãããšããŠãããã¹ãŠã§åãããã«åãä¿èšŒã¯ãªããããæ¬åœã«ãã¹ãŠã®ç°å¢ã§åäœä¿èšŒãããã®ã§ããã°ãå®éã®ã·ã§ã«ãšç°å¢ã§ãã¹ãããªããã°ãªããŸãããash ç³»ã®ã·ã§ã«ã§ãã FreeBSD sh ã NetBSD sh 㯠Linux ã§ã¯åããªãã®ã§ãç§ã¯ä»®æ³ãã·ã³ã« OS ãã€ã³ã¹ããŒã«ããŠãã¹ãããŠããŸããïŒé¢åã§ãâŠâŠïŒ
ãã ãäžã€ã ãèšã£ãŠãããšãã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ã®åé¡ã¯ãçŸç¶ã®åé¡ç¹ã§ããå°æ¥è§£æ±ºå¯èœãªãã®ã§ããã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ãäœãçç±ã¯ OS ã®æ©èœïŒPOSIX ã³ãã³ããUNIX ã³ãã³ãïŒãçŽæ¥å©çšããŠããããã§ããOS ã®æ©èœãçŽæ¥äœ¿çšããŠããå ŽåãOS ã®éããèªåã§æèããªããã°ãªããªããªã£ãŠããŸããŸããã·ã§ã«ã¹ã¯ãªãããš OS ã®éã«ãOS ã®éããåžåããå±€ïŒç§»æ€æ§åé¡ã解決ããããã®ã·ã§ã«é¢æ°ã©ã€ãã©ãªãç§»æ€æ§ã®é«ãã³ãã³ãïŒãæã¿èŸŒãããšã§ãã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ã®åé¡ã¯å€§ããæ¹åãå¯èœã§ããã·ã§ã«ã«é¢ããŠã OS ã®ã·ã§ã« (/bin/sh) ã§ã¯ãªããç¹å®ã® OS ã«äŸåããŠããªãïŒå€ãã® OS ã§åäœããïŒã·ã§ã«ãäŸãã° bash ãã€ã³ã¹ããŒã«ããŠäœ¿ãã°ãç§»æ€æ§åé¡ã¯æ¹åãããã©ãã§ãåãäžã« bash ã®é«åºŠãªæ©èœã䜿ãããšãå¯èœã«ãªããŸãã
POSIX ã·ã§ã«ä»¥åã®ã·ã§ã«
Thompson shell / PWB shell
UNIX ã®èªç㯠1969 幎ãVersion 1 Unix ã®ãªãªãŒã¹ã¯ 1971 幎ã§ãããã® Version 1 Unix ã§äœ¿ãããŠããæåã®ã·ã§ã«ã Thompson shell ã§ããåå§çãªã·ã§ã«ã§å€æ°ããããŒå¶åŸ¡ã®æ©èœã¯ã·ã§ã«ã«ã¯å®è£
ãããŠããŸããã§ããããããŒå¶åŸ¡ã®æ©èœãå¿
èŠã«ãªã£ãæãif ã goto ãªã©ã¯å€éšã³ãã³ããšããŠå®è£
ãããŸããããã®ãããã®æŽå²ã¯ ksh ã®éçºè
ã§ãã David Korn ãèªã£ãŠããŸãïŒåèïŒã
ãã€ãã®æ©èœã¯ 1973 幎㮠Version 3 ãã远å ãããŸãããUNIX ã AT&T 以å€ã«é åžãããã®ã 1975 幎㮠Version 6 Unix ããã§ã1979 幎㮠Version 7 Unix ã§ã¯ Bourne ã·ã§ã«ã«çœ®ãæããããã®ã§ Thompson shell ã¯æ¬åœã«åæã®é ã« UNIX ãå ¥æããäŒæ¥ã倧åŠã§ãã䜿ãããŠããªããã€ããŒãªã·ã§ã«ãšããããšã«ãªããŸããïŒçŸåšã®ããã«ã€ã³ã¿ãŒãããã§ç°¡åã«ããŠã³ããŒãã§ãããããªæä»£ã§ã¯ãªãããšã«æ³šæããŠãã ããïŒ
1975 幎ã«ãªãªãŒã¹ãããã®ã PWB shell ã§ãããã㯠PWB/UNIX ãšåŒã°ãã Version 6 Unix ãããŒã¹ãšããããã°ã©ãåãã® Unix ã«å«ãŸããŠããã·ã§ã«ã§ Thompson shell 以äžã«ãã€ããŒãªã·ã§ã«ã§ããPWB shell 㯠Thompson shell ã«ããã€ãã®ãããŒå¶åŸ¡æ©èœãšå€æ°ïŒãã ãååã¯äžæåã®ã¿ïŒã远å ããããçšåºŠã®ããã°ã©ãã³ã°ãå¯èœãªåœ¢ã«ä¿®æ£ããããã®ã§ãããããå¶éã倧ãããæ°ãã«æžãçŽããã Bourne ã·ã§ã«ã«çœ®ãæããããããšã«ãªããŸãã
Thompson shell ããã³ PWB shell 㯠Bourne ã·ã§ã«ãšåãã sh ãšããããã°ã©ã åã§ãããããŒå¶åŸ¡ã®æžãæ¹ã«éãããããã Bourne ã·ã§ã«ãšã®äºææ§ã¯ãªããšèšã£ãŠæ§ããªããšæããŸãããå€éšã³ãã³ãã䞊ã¹ãã€ããšãªãã€ã¬ã¯ãçšåºŠã䜿ãã ãã®åçŽãªã¹ã¯ãªããã§ããã° Bourne ã·ã§ã«ã§å®è¡ããããšã¯å¯èœã ã£ãã§ãããããããåæã® UNIX ã§çšããããŠããã·ã§ã«ã®ããã¥ã¡ã³ãã¯ãOrigins of the Bourne shellãã§èªãããšãåºæ¥ãŸãã
ãã°ãã°ãã·ã§ã«ã¹ã¯ãªããã¯ããã°ã©ãã³ã°èšèªã«å«ãŸããã®ãïŒããšãããããã°ã©ãã³ã°èšèªãããªãã£ããäžäœãªããªãã ãïŒãšèãè¿ããããªããããªè³ªåãèŠãããŸãããã»ãšãã©æåã®é ããããã°ã©ãã³ã°èšèªãšããŠäœãããŠããã®ã¯æããã§ããã·ã§ã«ã¹ã¯ãªãããããã°ã©ãã³ã°èšèªã§ãã以äžãã·ã§ã«ã¹ã¯ãªããã䜿ãããªãã«ã¯ããã°ã©ãã³ã°èšèªã®ç¥èãèãæ¹ãå¿
èŠã§ãã確ãã«æåã® Thompson shell ã¯ã³ãã³ããæžã䞊ã¹ãã ãã®æ©èœãããããŸããã§ããããããã« if ã goto ãå¿
èŠã«ãªãã·ã§ã«ã«çµã¿èŸŒãŸããŠãããŸããïŒå¿
èŠãªããšèããŠãããçµã¿èŸŒã¿ãŸããïŒãPWB shell ã«é¢ããè«æã®ã¿ã€ãã«ã¯ãUsing a Command Language as a High-Level Programming LanguageïŒã³ãã³ãèšèªã髿°Žæºããã°ã©ãã³ã°èšèªãšããŠäœ¿ãïŒãã§ãããããŠæåããããã°ã©ãã³ã°èšèªãšããŠã䜿ããããã«åèšèšãããäžããäœãçŽãããã®ã次㮠Bourne ã·ã§ã«ã§ãã
Bourne ã·ã§ã«
AT&T 以å€ã«åºãé åžãããæåã® UNIX ã 1979 幎ã«ãªãªãŒã¹ããã Version 7 Unix ã§ãããã㯠UNIX ãåçšåè·¯ç·ã«åããåã®æåŸã® UNIX (Research Unix, Ancient UNIX) ã§ãããBourne ã·ã§ã«ã¯ãã® Version 7 Unix ãšãšãã«ãªãªãŒã¹ãã Thompson shell / PWB shell ã眮ãæããŸãããBourne ã·ã§ã«ã«ã¯ããŒãžã§ã³çªå·ã¯ãªã UNIX ã®äžéšãšããŠãªãªãŒã¹ããããã UNIX ã®ããŒãžã§ã³ã§åºå¥ãããŠããŸããæåã®ããŒãžã§ã³ãããã¹ãŠã®æ©èœãå®è£ ãããŠããããã§ã¯ãªããUNIX ã®ãªãªãŒã¹ãšãšãã«ä»¥äžã®ãããªæ©èœã远å ã倿Žãè¡ãããŸããã
| UNIX ããŒãžã§ã³ | è¿œå æ©èœ |
|---|---|
| Version 7 (1979) | ãããŒå¶åŸ¡ãã³ãã³ã眮æãã·ã§ã«å€æ°ãç°å¢å€æ°ããã©ã¡ãŒã¿çœ®æ |
| System III (1981) | ã³ã¡ã³ã (#)ãset --ããã«ãã€ã³ (test/[) |
| SVR1 (1983) |
shift n |
| SVR2 (1984) | ã·ã§ã«é¢æ°ããã«ãã€ã³ (unset, echo, type) |
| SVR3 (1986) | çŸåšã® $@ ã®åäœãžã®ä»æ§å€æŽããã«ãã€ã³ (getopts) |
| SVR4.0 (1989) | ãžã§ãã³ã³ãããŒã« |
| SVR4.2 (1992) |
read -rïŒShellCheck ã§å¿
ãæå®ãããšèšãããã»ã©éèŠãªæ©èœïŒ |
Bourne ã·ã§ã«ã®æçµããŒãžã§ã³ã¯ POSIX ã§ã·ã§ã«ãæšæºåããã幎ãšåã 1992 幎㮠SVR4.2 ã§ããããããæ¡çšãã Unix 㯠UnixWare ã OpenUnix ããããããªããäž»ãªåçš UNIX ã§æ¡çšããã Bourne ã·ã§ã«ã¯ãããããåã®ããŒãžã§ã³ã䜿ãããŠããŸãããBourne ã·ã§ã«ã®æŽæ°å±¥æŽããèªã¿åããããšã¯ãåããŒãžã§ã³éã«ã¯å°ãããªãéããããäºææ§ã¯ããã»ã©é«ããªãã£ããšããããšã§ããåæã® Bourne ã·ã§ã«ã«ã¯ã·ã§ã«é¢æ°ã¯ãããŸããã "$@" ã®åäœãçŸåšã®ã·ã§ã«ãšã¯ç°ãªã£ãŠããŸããæŽã«åé¡ãªã®ã¯ AT&T ããã©ã€ã»ã³ã¹ãåããŠéçºãããåçš UNIX ã§ãããããã¯å UNIX ãã³ããŒããšã«ããããç¬èªã®ä¿®æ£ãå ããŠãããå
ã«ãªã£ãŠãã Bourne ã·ã§ã«ãšåäœãç°ãªãå ŽåããããŸããã©ã€ã»ã³ã¹äžã®çç±ããåæã® BSD (3BSDã4.xBSD) ãé€ã㊠BSD ç³» Unix ã§ã¯ Bourne ã·ã§ã«ã¯äœ¿ãããŠããªãããšã«æ³šæããŠãã ãããçãèšã Bourne ã·ã§ã« ãšã¯äžäœã©ã®ããŒãžã§ã³ãã©ã®å®è£
ã®è©±ãªã®ã§ããããïŒ
å Bourne ã·ã§ã«ã®ããªãšãŒã·ã§ã³ã®éããªã©ã¯ãThe Traditional Bourne Shell Familyãã«ãŸãšããããŠããŸããããã§ã«éå»ã®ã·ã§ã«ã§è©³ããç¥ãå¿ èŠã¯ãªãã§ããããããä»®ã«ä»ã Bourne ã·ã§ã« ã䜿ã£ãŠãããšããã POSIX ã·ã§ã«ãžç§»è¡ããããšãããããããŸããBourne ã·ã§ã«ãš POSIX ã·ã§ã«ã®å ·äœçãªéãã¯ãç°¡åã«ã§ãããBourne Shell(ã¬ã¬ã·ãŒ sh)ãšPOSIXã·ã§ã«(sh, bash, etc)ã®éããã§ãŸãšããŠããã®ã§åèã«ããŠãã ããããšã¯ããç§»è¡äœæ¥ã§å€§å€ãªã®ã¯ã·ã§ã«ã®äºææ§ãšèšããããããããã³ãã³ãã®äºææ§ã ãšæããŸããã
ãææ°ã®ãBourne ã·ã§ã«ã«ã€ããŠ
AT&T ã®å ¬åŒã® Bourne ã·ã§ã«ã®éçºã¯çµäºããŠããŸããããã®åŸç¶ãšãªããããžã§ã¯ããäºã€ãããŸããç§ã¯ãããã®ã·ã§ã«ã¯ã¡ã³ãããç°ãªããããäžéã§äžè¬çã«èšãããŠãã Bourne ã·ã§ã«ãšã¯å¥ç©ãšããŠæ±ã£ãŠããŸãããäžå¿ãœãŒã¹ã³ãŒããç¶æ¿ããææ° Bourne ã·ã§ã«ã¯ãããŸããšããããšã§ç޹ä»ã§ãã
äžã€ã¯ 2005 幎ã«ãªãŒãã³ãœãŒã¹ãšããŠå ¬éããã OpenSolaris ãå ã«éå§ããã The Heirloom Project ã§ããããã¯äŒçµ±ç㪠Unix ãŠãŒãã£ãªãã£ã®ã³ã¬ã¯ã·ã§ã³ã§åºæ¬çã«ã¯ POSIX æºæ ã§ã¯ãªãå ã® UNIX ã³ãã³ãã®ãŸãŸã®åäœã§ãã Unicode (UTF-8) 察å¿ãè¡ãããŠããããã§ãããã®äžã®äžã€ãšã㊠The Heirloom Bourne Shell ãå«ãŸããŠããŸããThe Heirloom Project 㯠2007 幎ãæåŸã«ãããžã§ã¯ããæŸæ£ãããŠããŸããããåŸç¶ãšãªããããžã§ã¯ãã 2021幎10æããå§åã 2022幎8æã« Heirloom NG ãšããŠæ£åŒã«ãã©ãŒã¯ãããããã§ãããšãããããªããšãè±èªç wikipedia ã® Heirloom Project ã«æžããŠããã®ã§ãããé¢é£ããæ å ±ã調ã¹ãŠãã»ãšãã©èŠã€ããããæ¥ãæµ ããããžã§ã¯ãã§ããããä»åŸã®ç¶ç¶æ§ã®å€æã¯é£ããæã§ããåé¡ãªããã«ãã§ããã°ãå€ãã·ã§ã«ã¹ã¯ãªããã®äºææ§ã®çç±ãªã©ããå€ã UNIX ã³ãã³ãã®ææ° OS 察å¿çãå¿ èŠãªå Žåã«ããã®ãããžã§ã¯ãã®ãœãããŠã§ã¢ãå©çšã§ãããããããŸãããå ã® The Heirloom Project ã®åŒãç¶ãã§ããã°ææ° OS ã«å¯Ÿå¿ãã以å€ã®å€§ããªæ¹è¯ã¯ç¡ã POSIX ãžã®æºæ ã¯ç®æããªããšæãããŸãããã©ããªãã®ãã¯ããããããŸããã
ããäžã€ã¯ Schily Bourne Shell ãšããã·ã§ã«ã§ãããã¡ããåãã OpenSolaris ããã®æŽŸçã§ãOpenSolaris çã® Bourne ã·ã§ã« (SVR4)ãããŒã¹ã«éçºãå§ãŸããŸããããPOSIX æºæ ã§ã¯ãªã Bourne ã·ã§ã«äºæã® oboshããæå°éã® POSIX æºæ ã® pboshããæ¡åŒµæ©èœãå«ã POSIX æºæ ã® boshãã® 3 ã€ã®äºçš®ãå«ãŸããŠããŸããéçºè ã® Jörg Schilling ã 2021幎10æ10æ¥ã«äº¡ããªã£ããããã°ããåæ¢ç¶æ ã§ãããããããžã§ã¯ãã®ç¶ç¶ãæããã©ã³ãã£ã¢ã°ã«ãŒãã«ç¡äºåŒãç¶ãããããã§ãïŒæ°ãããããžã§ã¯ãããŒãžïŒããã¡ã㯠obosh ãé€ããåŸæ¥ã® Bourne ã·ã§ã«ã POSIX æºæ ã«ããããšãç®çã§ãããããææ°ã® POSIX ãžå¯Ÿå¿ããŠãããšèŠãããŸããçŸåšãã£ãšãå®å¿ããŠäœ¿ããææ°ã® Bourne ã·ã§ã«ã§ãã
C ã·ã§ã« (csh, tcsh)
csh 㯠1979 幎ã«ãªãªãŒã¹ããã 2BSD çšã«éçºãããã·ã§ã«ã§ãã2BSD 㯠Version 6 Unix ãããŒã¹ãšããŠãã Bourne ã·ã§ã«ã¯ãŸã å«ãŸããŠããŸããã§ããããªãªãŒã¹ã¯ 1978 幎㚠Bourne ã·ã§ã«ããæ©ããªãªãŒã¹ãããããšã«ãªã£ãŠããŸãããBourne ã®éçºã¯ 1975 幎ã®çµããé ã«éå§ãã 1976 å¹Žã«æåã®ããŒãžã§ã³ãå ¬éãããŠãããã»ãŒåææã«éçºãè¡ãããŠããŸãïŒåèïŒãããã°ã©ãã³ã°å¯èœãªã·ã§ã«ã¹ã¯ãªãããæ±ããããŠããåœæã® AT&T Unix ã®åçã Bourne ã·ã§ã«ã§ãBSD Unix ã®åçã C ã·ã§ã«ãšããããã§ãã
ã€ã³ã¿ã©ã¯ãã£ãã·ã§ã«ãšããŠã®æ©èœã Bourne ã·ã§ã«ãããåªããŠãããã 1990 幎代é ïŒïŒïŒãŸã§ã¯ csh ããã³åŸç¶ã® tcsh ããã䜿ãããŠããŸããããBourne ã·ã§ã«ãããåŸã®ã·ã§ã«ã«ã¯ csh / tcsh çžåœã®æ©èœãå«ãŸããããæ¬¡ç¬¬ã«äœ¿ãããªããªã£ãŠãããŸãããFreeBSD 13 ã§ã¯ root ã®ããã©ã«ãã·ã§ã«ã¯ä»ã /bin/csh ã§ãããæ¬¡æããŒãžã§ã³ãã /bin/sh ã«å€æŽã«ãªãããã§ãïŒåèïŒã
C ã·ã§ã«ã¯äžè¬çã« C èšèªã«è¿ããšèšãããŠããŸãããå®éã«ã¯ C èšèªãããã¯ã»ãšãã©ãããŸããã颿°ã¯ãããŸããããif ã®çµãã㯠endif ã§ãããfor ããããŸããïŒä»£ããã« foreach ããããŸãïŒããããã if ã®æ¡ä»¶æã C èšèªã®ããã«æžããçšåºŠã®ãã®ã§ãããŸãã·ã§ã«ã¹ã¯ãªãããæžãã«ã¯é©ããŠããããæåãªãæå®³ãª csh ããã°ã©ãã³ã°ãã«ãŠ 1995 å¹Žã®æç¹ã§å€ãã®åé¡ç¹ãææãããŠããŸããæã«äœ¿ã£ãŠæ
£ããŠããŸã£ããšãã人ãé€ã㊠C ã·ã§ã«ãéžã¶çç±ã¯ãªãã§ãããã
å
¬å¹³ã®ããã«èšããš tcsh ã¯ä»ãéçºãç¶ããŠããïŒãããžã§ã¯ãããŒãžïŒãææ°çã® 6.24.01 㯠2022幎5æ12æ¥ã«ãªãªãŒã¹ãããŠããŸããææ°çã§ã¯æ°æ©èœ $'...' (dollar-single-quotes) ã远å ãããŠããŸãããã㯠POSIX ã·ã§ã«ã§ãæšæºåããããšèŠãããŠããæ©èœãšåãã§ãããã¯ã¹ã©ãã·ã¥ãšã¹ã±ãŒãæåã䜿ãããšãåºæ¥ãæååã¯ã©ãŒãã§ãïŒäŸãã° echo $'FOO\nBAR' ã® \n ã®ãããªæžåŒã§æ¹è¡æåã䜿ãããšãåºæ¥ãŸãïŒããããããããããã¯åé¡ç¹ãæ ¹æ¬çã«ä¿®æ£ããã埩掻ãéããæ¥ãæ¥ããããããŸããããçŸç¶ãšããŠã¯å€§ããªåœ±é¿åãããã·ã§ã«ã§ã¯ãªããªã£ãŠããŸãã
rc ã·ã§ã« / es ã·ã§ã«
rc ã·ã§ã«ã¯ AT&T UNIX ã®åŸç¶ãšãªãã¹ãéçºãããŠãã Plan 9 çšã®ã·ã§ã«ã§ããæ®å¿µãªãã Plan 9 ã®éçºãäºå®äžäžæ¢ãšãªã rc ã·ã§ã«ãæ®åããããšã¯ãããŸããã§ããããBourne ã·ã§ã«ã«ä»£ããæšæºã·ã§ã«ãšãªãã¯ãã ã£ãã·ã§ã«ã§ãããããããããããšã¯ UNIX ã®éçºè ãã¡ã¯ Bourne ã·ã§ã«ãæé«ã®ã·ã§ã«ã ãšã¯èããŠããªãã£ããšããããšã§ããBourne ã·ã§ã«ããã³åŸç¶ã® POSIX ã·ã§ã«ããã®ãããªææ³ãªã®ã¯æŽå²ççç±ã«ãããŸãããrc ã·ã§ã«ã®æ¹ãåªããŠããã®ãªããªã POSIX ã§æšæºåãããªãã£ãã®ããšåãããã°ãrc ã·ã§ã«ã¯ç§»æ€æ§ãããïŒã©ãã§ã䜿ããïŒã·ã§ã«ã§ã¯ãªãã£ãããã§ãããã
rc ã·ã§ã«ã¯ Bourne ã·ã§ã«ããã·ã³ãã«ãªææ³ãæã£ãã·ã§ã«ã§ããç§ãç¹ã«å€§ããªéãã ãšèããç¹åŸŽã¯ããã¹ãŠã®å€æ°ãåäžã®å€ã§ã¯ãªãé
åãšãªã£ãŠããããšã§ããé
åã¯è€æ°ã®åŒæ°ãä¿æããããã® $@ ã«çžåœãã倿°ãšããŠå¿
èŠãªãã®ã§ãããŸãåŸæ¥ã®ãã€ã | ã«å ããŠãç·åœ¢ã§ãªããã€ããšã㊠cmp <{old} <{new} ã®ãããªæ§æãæã£ãŠããŸãããã㯠bash ãªã©ã«ããããã»ã¹çœ®æãšåçã®æ©èœã§ããããŒã«ã«å€æ°ã«çžåœããæ©èœããããŸããrc ã·ã§ã«ã®ä»æ§ããå®çŸãããã¹ãã ã£ãã·ã§ã«ã®æªæ¥ãã·ã§ã«ãæ¬æ¥æã£ãŠããªããã°ãªããªã£ãæ©èœãäžèŠã ã£ãæ©èœãèªã¿åãããšãåºæ¥ãŸãããã ã rc ã·ã§ã«ã¯æ°ããèšèšã® OS ã§ãã Plan 9 ã§ã®å©çšãåæãšããŠããã®ã§ Linux / Unix ã§äœ¿ãã«ã¯äžè¶³ããŠããæ©èœãããããã§ãã
rc ã·ã§ã«ã®ããã¥ã¡ã³ãã¯ãRc â The Plan 9 Shellãã§èªãããšãåºæ¥ãŸããïŒæ³šæ ãã®ããã¥ã¡ã³ãã§ã¯ Bourne ã·ã§ã«ãšã®æ¯èŒããããŠããŸãããããã¯å¿ ããã POSIX ã·ã§ã«ã«åœãŠã¯ãŸãããã§ã¯ãããŸãããäŸãã° IFS ã«é¢ä¿ããã»ãã¥ãªãã£ããŒã«ã®è©±ã¯ POSIX ã·ã§ã«ã«ã¯åœãŠã¯ãŸããŸãããïŒ
Plan 9 㯠2000 幎ã«ãªãŒãã³ãœãŒã¹ãšãªããŸãããããã以åã¯ãœãŒã¹ã³ãŒãã¯äžè¬ã«å ¬éãããŠããŸããã§ãããããã§ 1991 幎ã«ãªãŒãã³ãœãŒã¹ãšããŠåå®è£ ããã®ã Rakitzis rc ã§ããããã€ãæ©èœè¿œå ãè¡ãããŠããããã§ãããPlan 9 rc ãšå€§ããªéãã¯ãªãããã«æããŸãã
ãã㊠Rakitzis rc ãæ¹è¯ããã®ã 1993 幎ã«ãªãªãŒã¹ããã es - extensible shellïŒéå ¬åŒïŒ ã§ããéçºè ã®äžäººã¯ Byron Rakitzis ã§ããRakitzis rc ã®åŸç¶ãšãããããæ°ãã«é¢æ°åããã°ã©ãã³ã°æŠå¿µãåãå ¥ããŠæ¡åŒµããæŽŸçã·ã§ã«ãšèããã®ãè¯ãããã§ããRakitzis rc ã®æ¹ã¯ Byron Rakitzis æ¬äººã«ãã£ãŠé »ç¹ã§ã¯ãªããã®ã®ã¡ã³ããã³ã¹ãããŠããããã§ãããçç±ã¯ããããŸããã es ã®æ¹ã¯ç¬¬äžè (James Haggerty) ã«ãã£ãŠã¡ã³ããã³ã¹ãããŠããããã§ãã
POSIX æšæºèŠæ Œã®åœ¹å²
Bourne ã·ã§ã«ã®æä»£ãéããã·ã§ã«ã®ä»æ§ã¯ POSIX ã§æšæºåãããããšã«ãªããŸããPOSIX ã·ã§ã«ã®è©±ãããåã«ãçè§£ãå©ããããã«ããªã POSIX æšæºèŠæ Œãããã®ãããã®åœ¹å²ã説æããããšæããŸããPOSIX ã®è©±ã¯ããããšãã人ã¯é£ã°ããŠãã ããã
POSIX ãšã¯ãOS ã®ã€ã³ã¿ãŒãã§ãŒã¹ãã ããæšæºåãããã®
UNIX ã® OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã POSIX ãšããŠæšæºåãããã®ã¯ 1988 幎ã§ãããã ãããã®æã«æšæºåãããã®ã¯ POSIX APIïŒC èšèªã€ã³ã¿ãŒãã§ãŒã¹ïŒãåçš®ãã¡ã€ã«åœ¢åŒãªã©ã§ããã®æç¹ã§ã¯ãŸã ã·ã§ã«ã¯æšæºåãããŸããã§ããããã®æšæºèŠæ Œã¯ POSIX.1 ãšåŒã°ããŸãããPOSIX ã§ã·ã§ã«ãšã³ãã³ããæšæºåãããã®ã¯å°ãé ã㊠1992 幎ã§ãããã®æšæºèŠæ Œã¯ POSIX.2 ãšåŒã°ããŸãããçŸåšã§ã¯ POSIX.2 㯠POSIX.1 ã«åžåãããŠãããPOSIX ã®æšæºèŠæ Œã¯ POSIX.1 ã®ã¿ãšãªã£ãŠããŸããææ°ã® POSIX 㯠POSIX.1-2008 (Issue 7) ã«çްããªãã°ä¿®æ£ãå ãã POSIX.1-2017 ã§ããæ¬¡ã®æ¹èš POSIX.1-202x (Issue 8) ã¯è¿ããã¡ã«è¡ãããäºå®ã§ãã
ç§ã¯ä»¥å㯠OS ãšããã°ã«ãŒãã«çžåœã®éšåïŒPOSIX API çžåœïŒãäž»ã§ãã³ãã³ãã¯ããŸãã§ã€ããŠãã䟿å©ãœãããŠã§ã¢çšåºŠã«ããèããŠããã®ã§ãããããã§ã¯ãªã UNIX ã«å«ãŸããå šãŠã OS ã§ãããã·ã§ã«ãæšæºçãªã³ãã³ãã OS ã®äžéšãšããŠæ±ãããŠããŸããPOSIX ã®æšæºåã®å¯Ÿè±¡ã¯ãOS ã®ã€ã³ã¿ãŒãã§ãŒã¹ãã ãã§ããããšã«æ³šæããŠãã ãããOS ãã©ã®ããã«å®è£ ãããã¯æ±ºããããŠããŸããããã¢ããªã±ãŒã·ã§ã³ã®é åã¯æšæºåã®å¯Ÿè±¡å€ã§ããUNIX ã®æ©èœã®ãã¡ãç§»æ€æ§ãããã¢ããªã±ãŒã·ã§ã³ãéçºããã®ã«å¿ èŠã㪠OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã®ã¿ãæšæºåããŠãããUNIX ã®ãã¹ãŠã®æ©èœã®æšæºåãç®æãããã®ã§ã¯ãããŸãããOS ã«ãã£ãŠéãéšå㯠OS ã®æ©èœã ããªã®ã§ããã®ã€ã³ã¿ãŒãã§ãŒã¹ããæšæºåãããŠããã°ãç§»æ€æ§ã®ããã¢ããªã±ãŒã·ã§ã³ãéçºããããšå¯èœã ãšããçå±ã§ãã
POSIX ã¯ãPOSIX ã§æå®ããèšèªãã·ã§ã«ãã³ãã³ãã®ã¿ã䜿ã£ãŠéçºããªããã° POSIX æºæ ã®ãœãããŠã§ã¢ã«ã¯ãªããªãããšã¯èšã£ãŠããªãããšã«æ³šæããŠãã ããããããŸã§ OS ã®æ©èœã䜿ãæã¯ãPOSIX ã®æšæºèŠæ Œã«åŸããšç§»æ€æ§ã®ããã¢ããªã±ãŒã·ã§ã³ãéçºãããããšèšã£ãŠããã ãã§ããOS ã¯ããããå¥ã®äŒç€Ÿã»å£äœãéçºããŠããã®ã§ OS ã®æ©èœã«ã¯ã©ãããŠãéããã§ãŠããŸããŸããéããããéšåã¯æå°éã«ããªããã°ãããŸããããªãã§ãããã§ã OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ããå¿ èŠã¯ãããŸãããäŸãã°ãããŸããŸãªèšèªãã©ã€ãã©ãªãã³ãã³ãã OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ããå¿ èŠã¯ãããŸããããïŒ OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ããŠããŸãã°ãããããã® OS ãã³ããŒãããããã§éçºããããšã«ã€ãªãã£ãŠããŸããŸããããã§ã¯ OS éã®äºææ§ã¯äœããªã£ãŠããŸããŸããå¯èœãªéã OS ã®éšåã¯æžãããã»ããè¯ãã®ã§ãã
å®éã®æ OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã«ã¯ïŒçŽæ¥ïŒäŸåããªãæ¹ãç§»æ€æ§ã¯é«ããªããŸãããªããªããã®ãœãããŠã§ã¢ïŒèšèªãã©ã€ãã©ãªãã³ãã³ãïŒãäœã£ãŠããäŒç€Ÿã»å£äœãäžã€ãªããå°æ°ãããªãããã§ããå®è£ ãå€ããã°å€ãã»ã©å®è£ ã«ããéããçºçããŸããä»®ã«å®è£ ãäžã€ãããªãã®ã§ããã°ããã®å®è£ ã«éããããããšã¯ãããŸããïŒå®éã«ã¯ããŒãžã§ã³ã«ããéãããããŸããïŒãã©ãã§ãåãããã«åãããã«äœãããèšèªãã©ã€ãã©ãªãã³ãã³ããšããã®ã¯ OS ã®çްããéããåžåããŠããŸãããã㯠OS ãããŒããŠã§ã¢ã®éããåžåããŠããã®ãšåãæ§å³ã§ããOS ã¯ããŒããŠã§ã¢ã®éããåžåããŠããŸãããOS ã®éãã¯æ®ã£ãŠããŸãããã®ãããããåžåãããœãããŠã§ã¢ãå¿ èŠã§ããããããã©ãã§ãåãããã«äœããããœãããŠã§ã¢ãã§ãããã©ãã§ãåããœãããŠã§ã¢ã«äŸåããŠäœãããã¢ããªã±ãŒã·ã§ã³ã¯ã©ãã§ãåãããã«åããŸããããã OS äžã§ãœãããŠã§ã¢ãåããä»¥äž OS ã®æ©èœã䜿ããªãããã«ã¯è¡ããªãã®ã§ãæå°éã® OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ãæšæºåããåäœéãæãããã°ãããæç¢ºã«ããŠãç§»æ€æ§ãããã¢ããªã±ãŒã·ã§ã³ãéçºããããããã®ã POSIX ãªã®ã§ããéã«èšãã°é«åºŠãªæ©èœã¯ OS ã®å€ã§å®çŸããã°ååã§ãããšããããšã§ãã
å°ãäœè«ã«ãªããŸããæ¬¡äžä»£ UNIX ãšããŠéçºãé²ããããŠãã Plan 9 㯠UNIX ã忣 OS ã«é²åããã詊ã¿ã§ããã忣 OS ãšã¯ãããã¯ãŒã¯ã§ã€ãªãã£ãè€æ°ã®ã³ã³ãã¥ãŒã¿ããäžã€ã®ã·ã¹ãã ãšããŠèŠããããã«ãã OS ã§ãã¢ããªã±ãŒã·ã§ã³ããã¯ãããã¯ãŒã¯ã®åããåŽã®ã³ã³ãã¥ãŒã¿ãããŒã«ã«ã³ã³ãã¥ãŒã¿ã®ããã«äœ¿ãããšãã§ãã OS ã§ãããããæŽå²ã®æµã㯠OS ããã®ããã«æ¡åŒµããã®ã§ã¯ãªããé«åºŠãªæ©èœã¯ OS ã®å€ã§å®çŸããŸãããããéžã³ãŸããããããçŸåšã®ã¯ã©ãŠããã³ã³ãããªãŒã±ã¹ãã¬ãŒã·ã§ã³ã·ã¹ãã ã§ãã忣 OS ã«ãã£ãŠäœãããäžçãèŠãŠã¿ããæ°ã¯ããŸãããçŸå®ãšããŠã¯äººã 㯠OS ã倧ããå€ãããããå°ããªå€åãéžãã ãšããããšã§ããããã»ã©ãŸã§ã«äºææ§ãšããã®ã¯çœªæ·±ãçžããªã®ã§ãã
è©±ãæ»ããšãæå°éã® OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã®ã¿ãæšæºåããããšãã POSIX ã®æ¹éã¯ãé«åºŠãªæ©èœã¯ OS ã®å€ã§å®çŸããã°è¯ãããšããèãæ¹ã§ãããPOSIX ã³ãã³ãïŒOS ã®åºæ¬æ©èœïŒã ãã䜿ã£ãŠéçºãããããšããèãæ¹ãšã¯æ£å察ã®ãã®ã§ããããšãæå³ããŠããŸãããããã OS ã管çããã·ã¹ãã ã³ãã³ãïŒãŠãŒã¶ãŒç®¡çãããã±ãŒãžç®¡çããŒã«ãªã©ïŒã¯ POSIX ã®å¯Ÿè±¡å€ã®é åãæ±ãã³ãã³ãã§ OS äŸåãªã®ã§ç§»æ€æ§ã¯ãããŸãããããªãã¡ POSIX ã§æšæºåãããã³ãã³ãã ãã§ãªãã§ãåºæ¥ãããããªãã®ã§ãããŸããæå°éã® OS ã®æ©èœã ãã䜿ãå Žåããã以å€ã®å šãŠãèªåã§äœããªããã°ãªããªããªã£ãŠããŸãçç£æ§ã¯å€§ããäžãã£ãŠããŸããŸããçŸå®ã«ã¯ POSIX ã³ãã³ãã§ããæšæºã€ã³ã¹ããŒã«ãããŠãããšã¯éããªãã®ã§ãè¶³ããªãã³ãã³ãã¯ã€ã³ã¹ããŒã«ããªããã°ãªããŸãããäœãããã€ã³ã¹ããŒã«ããã®ã§ããã° POSIX ã³ãã³ã以å€ãã€ã³ã¹ããŒã«ããã®ãåãäºã§ãã
ç§ãèšãããã®ã¯å€æ°ã®ãã©ãã§ãåãã³ãã³ããã POSIX ã³ãã³ãã§ã¯ãªããããšèšã£ãŠç¡èŠããã®ã¯ãããŸããããšããããšã§ãããªãæšæºã€ã³ã¹ããŒã«ãããŠããã³ãã³ãã ãã§é 匵ãããšããã®ãçè§£ã§ããŸããããã©ãã§ãåãã³ãã³ããçãŸããã®ã¯ãç§»æ€æ§ãããã¢ããªã±ãŒã·ã§ã³ãéçºã容æã«ãã POSIX ã®ææã§ããPOSIX ã®ãããã§ã©ãã§ãåãã³ãã³ããçãŸããã®ã«ãããã䜿ããªããšããã®ã¯ POSIX ã®ååšäŸ¡å€ãåŠå®ãããã®ã§ãããªãŒãã³ãœãŒã¹ã§ã©ãã§ãåãã³ãã³ãããã§ã«ããã®ã«ããããšåããã®ã OS ãã³ããŒãåå®è£ ããããã©ãŒã¯ããŠèªåãã¡ã§ã¡ã³ããã³ã¹ããŠããçç±ã¯ãªãã®ã§ããããã®ã³ãã³ãã OS ã®ã€ã³ã¿ãŒãã§ãŒã¹ãšãªãããšããããŸãããPOSIX ã³ãã³ãã«ç»æçã§äŸ¿å©ãªæ°ããã³ãã³ãã远å ããããã倧ããªæ¹åãè¡ãããããšã¯ä»åŸããã£ãšãããŸãããè¡ãããã®ã¯å°èŠæš¡ãªæ¹åã®ã¿ã§ãããã POSIX ã³ãã³ãã ãã䜿ãããšããã®ã§ããã°ããã®å ãã£ãšäŸ¿å©ãªã³ãã³ãã䜿ããªããšããããšã§ãã
POSIX æšæºå以åã«å€ãã®ã·ã§ã«ãèªçããçç±
çŸåš POSIX ã·ã§ã«ãšãªã£ãŠããã·ã§ã«ã®å€ãã¯ãPOSIX ã§ã·ã§ã«ãæšæºåããããããåã«éçºãå§ãŸããŸããããããã®ã·ã§ã«ã¯ Bourne ã·ã§ã« ãŸã㯠ksh88 ã®ã¯ããŒã³ãšããŠéçºãå§ãŸããŸãããããã€ãã®ã¯ããŒã³ãèªçããçç±ã¯ãåœæã® Bourne ã·ã§ã«ãããã³ ksh88 ã¯ãããã©ã€ãšã¿ãªãªãœãããŠã§ã¢ã ã£ãããã§ããAT&T ããæ£åŒãªã©ã€ã»ã³ã¹ãäžãããã UNIX ã§ãªããã°äœ¿ãããšãåºæ¥ãªãã·ã§ã«ã§ãããåæã® 4.3 BSD (1986) ã§ Bourne ã·ã§ã«ã䜿ãããããšããããŸããã1980 幎代åŸåããå§ãŸã UNIX ã®æšæºèŠæ Œãå·¡ãäºãã§ãã UNIX æŠäº ã«ãã£ãŠãBSD Unix ã§ Bourne ã·ã§ã«ã䜿ãããšã¯ã§ããªããªããŸãããäºå®äž Bourne ã·ã§ã«ã¯åçš UNIX ã ãã§äœ¿ãããŠããã·ã§ã«ã ã£ããšããããšã§ãã
Bourne ã·ã§ã«ãèªç±ã«äœ¿ããªããšããå¶çŽããããŸããŸãªã·ã§ã«ãèªçããŸãããAT&T ã§ããŸãã€ã³ã¿ã©ã¯ãã£ãã·ã§ã«ãšããŠäœ¿ãåæãããã匷åãããã¹ã¯ãªããèšèªã欲ãããŠãŒã¶ãŒã®ããã«ãåŸç¶ã® KornShell (ksh) ãèªçããŸãããBourne ã·ã§ã«ãŸã㯠ksh ãæ¡çšããåçš UNIX ã§ããããããäŒç€Ÿãããããã·ã§ã«ã«æãå ããŠãããä»ã§èšããã©ãŒã¯ãè¡ãããŠããŸãããäžæµã®ãããžã§ã¯ãïŒã€ãŸã AT&TïŒãã·ã§ã«ã®ãœãŒã¹ã³ãŒããäžå 管çããã®ã§ã¯ãªããå UNIX ãã³ããŒãæ¢åã® UNIX ã®ãœãŒã¹ã³ãŒããããŒã¹ãšããŠäœ¿ããããããèªåãã¡ã®æã§èªåãã¡ã®ã³ã³ãã¥ãŒã¿çšã« UNIX ãç§»æ€ãããšããããæ¹ã¯ãããŸããŸãªã¢ãŒããã¯ãã£ã®ã³ã³ãã¥ãŒã¿ããããªãŒãã³ãœãŒã¹ãšããèãæ¹ããªãåœæã®æåã§ãããã®ãã Unix 㯠SystemV ç³»ãBSD ç³»ãšãã«ãåãååã§ãããªãããããããç°ãªãåããããã·ã§ã«ãããã€ãèªçããŸããããããŠã·ã§ã«ã¹ã¯ãªããã®ç§»æ€æ§ã¯äœããªã£ãŠè¡ãããšã«ãªããŸãã
ãªã POSIX ã¯ã·ã§ã«ã¹ã¯ãªããã®èšèªãæ¹åããªãã®ãïŒ
æ®å¿µãªãããã㯠POSIX ã®ä»äºã§ã¯ãããŸãããPOSIX ãæ¹åããªãã®ã§ã¯ãªããå OS ãã³ããŒãã·ã§ã«éçºè ãã·ã§ã«ãæ¹åããŠããªãã®ã§ããå®éã«ã¯æ¹åããŠãªãã®ã¯äž»ã« BSD ç³»ãåçš UNIX ã®ã·ã§ã«ãš dash ã§ããã以å€ã® bash ã zsh ãªã©ã¯æ¹åãç¶ããŠããŸããæ¹åãç¶ããŠããŸãããè€æ°ã®ã·ã§ã«ã§ç§»æ€æ§ããªãéã POSIX ã§æšæºåããããšã¯ã§ããŸããã
äŸãã° echo ã³ãã³ãã¯è€æ°ã®å®è£
ããããããããã®å®è£
ã§çްããåããç°ãªããŸããããå
šãŠã®ã·ã§ã«ã§ echo ã³ãã³ããå
šãåãåããããããã«å€ãã£ãã®ã§ããã°ãPOSIX ãããã«åãããŠæ¹èšãããã§ããããããã OS ãã³ããŒãã·ã§ã«éçºè
ã¯äºææ§ãç¶æããããã«æ¢åã®åäœãå€ããŸããããããã£ãŠ POSIX ããããåæã«æšæºåãããããããŸãããPOSIX ã¯ä»æ§ãæå³çã«æç¢ºã«æå®ããŠããªãéšåããããŸãããããã¯å OS ãäºææ§ãä¿ãŠãããã«ãããŠãã©ã®å®è£
ã§ã OKããšããŠããããã§ããäŸãã° echo ã³ãã³ãã§ -n ãæå®ããæããã®åããåºåã®æåŸã«æ¹è¡ããªããæå³ããã®ãããã®ãŸãŸ -n ãšããæååã§åºåããã®ã㯠POSIX ã§ã¯æå®ãããŠããŸãããããã¯ãåäœãæå®ããªãã=ãã©ã®å®è£
ã§ã OKããšå®çŸ©ããããšã§ãäºææ§ãä¿ã€ããšãå¯èœã«ãã€ã€ echo ã³ãã³ãã®æšæºåãå¯èœã«ããããã®ãã¯ããã¯ã§ãã
POSIX ã¯å®è£ ã«ãã£ãŠåäœã«éããããããšã蚱容ããŠããæšæºèŠæ Œã§ããããã¯æšæºèŠæ Œã«åããŠè¯ããšããæå³ã§ã¯ãããŸããããæšæºåããåããéã£ãŠããã®ãªãéã£ããŸãŸã§è¯ããšããæå³ã§ããåäœã®éãã蚱容ããŠããéšåã¯ãPOSIX ã§ã¯åäœãæå®ããªããã®ããã«æç¢ºã«æžãããŠããŸãããããã®åäœã®éãã«å¯Ÿå¿ããã®ã¯ã¢ããªã±ãŒã·ã§ã³éçºè ã®ä»äºã§ããPOSIX ã®ã¹ã¿ã³ã¹ã¯ãPOSIX æšæºèŠæ Œæžã«åäœãæå®ãããŠããªããšã¡ãããšæžããŠãããã ãããPOSIX èªãã°å®è£ ã«ãã£ãŠåããéããšããããšã¯ãããã§ããïŒããªã®ã§ããã¢ããªã±ãŒã·ã§ã³éçºè ã¯ãPOSIX ã§æšæºåãããŠããã³ãã³ãã ããåãåããããã¯ããã§ã¯ãªããPOSIX ã«ç§»æ€æ§ãé«ããããã®ã¬ã€ãã©ã€ã³ããããããããããèªãã§éçºãããããšèããªããã°ãªããŸããã
åããçµ±äžããã®ã§ã¯ãªãæ¢åã®åããææåããã®ã POSIX ã§ããç°ãªã OS ãšã®ç§»æ€æ§ããããšèªããããã°ããã㯠POSIX ã«åŸãã远å ãããã§ããããç§»æ€æ§ãããããšããã€ã³ãã®äžã€ãªã®ã§ Linux ã ããå€ããŠããã¡ã§ãïŒLinux ã ãã䜿ããæ©èœããä»ã® OS ãšã®ç§»æ€æ§ããªãã®ã¯åœããåã§ãããïŒïŒãPOSIX ã¯å€ãããããã«å€ããæ°ãã OS ã®æšæºèŠæ Œãå¿ èŠã ãšãèšã£ãŠãã人ãããŸãããæ°ããæšæºèŠæ Œãäœã£ããšããŠãã¡ãªããããªããã°æ¡çšããŸãããæ°ããæšæºèŠæ Œã«åŸãã®ã Linux ã ãã ã£ããšããããããã«ã©ã®ãããªæå³ãããã®ã§ããããïŒ å°ãªããšãããã¯ç§»æ€æ§ã®ãªã OS ã®æšæºèŠæ Œã§ãã
POSIX ãé·ãéãOS ã®æšæºèŠæ Œã§ããç¶ããçç±ã¯ãOS ã®ä»æ§ã決ããã®ã¯ OS ãã³ããŒã«ä»»ããŠãå¯èœãªéãæ¢åã®å®è£ ã®åããææåããããšã«åŸ¹ããããã§ããOS ãã³ããŒã決ããããšã«äœèšãªå£åºããããªãã£ããããã OS ãã³ããŒã¯ POSIX ã«æºæ ããããšèããã®ã§ããããã«ããšã POSIX ãäœããæ±ºãããšããŠãããã«åŸãå¿ èŠã¯ãããŸãããGNU 㯠POSIX ãªã©ã®ãæšæºèŠæ Œãåœä»€ã§ã¯ãªãææ¡ãšã¿ãªãããšæç¢ºã«è¿°ã¹ãŠããŸããGNU ãããžã§ã¯ãã®åµå§è ã§ POSIX ãšããååã®èæ¡è ã§ããããªãã£ãŒãã»ã¹ããŒã«ãã³ã«ãããPOSIX ãšã¯ãªã«ãïŒãã説æãã以äžã®èšäºãåç §ããŠãã ããã
ã·ã§ã«ã¹ã¯ãªããã®èšèªãåãã§ããPOSIX ãå å°ããŠã·ã§ã«ã®ä»æ§ãäœãã®ã§ã¯ãããŸãããã·ã§ã«ã®ä»æ§ã決ããã®ã¯ OS ãã³ããŒãã·ã§ã«éçºè ã§ããPOSIX ã¯æšæºåãå¯èœãªæãèŠã€ããŠãããææžåããã ãã§ãããããã£ãŠ POSIX ã·ã§ã«ã®ä»æ§ãå€ããŠã»ããã®ã§ããã°ãå ã« bash ãªã ksh ãªã zsh ãªãã®è€æ°ã®ã·ã§ã«ã®éçºè ã«ææ¡ããŠå€ããŠããããããããŸããããããäºææ§ã®åé¡ããããããããæå³ã¯ãªã«ãïŒãšåããæ¡çšãããã®ã¯é£ããã§ããããã ãããšãã£ãŠ POSIX ã«åããããŠæšæºèŠæ Œã倿Žããããšã§ãå OS ãã³ããŒãã·ã§ã«å®è£ è ã« POSIX æºæ ãããšå€æŽãè¿«ã詊ã¿ã¯æåããŸãããé çªãéãªã®ã§ããããããããã§ POSIX ã¯å€§ããªæ¹èšã¯ãããŸããããæ¹èšã«ãæéãããã£ãŠããŸãã®ã¯ä»æ¹ãããŸãããPOSIX ãæ¹èšããŠãªãã®ã§ã¯ãªããOS ãã³ããŒãæ¹èšããŠãªãã®ã§ãã
POSIX ã·ã§ã«ãžã®æ°ããæ©èœã®ææ¡ãåŽäžãããæµããäºã€ç޹ä»ããŠãããŸããæåŸã®ã³ã¡ã³ããèªãã§ã¿ãŠãã ãããã©ããªã«çŽ æŽãããææ¡ã§ãå ã«è€æ°ã®ã·ã§ã«ã«å®è£ ãããŠããªããã°åŽäžãããŠããŸãã®ã§ãã
- 0000553: Add new type of shell and shell feature requirement for new shell in posix.
-
0001026: The shell should support access to all 32 bit from the exit code
- Schily Bourne Shell éçºè ã«ããææ¡
/bin/sh ã¯ãã¯ã Bourne ã·ã§ã«ã§ã¯ãªã
POSIX ã§æšæºåãããŠããã·ã§ã«ã¯ sh ãšããååã§ããããã㯠Bourne ã·ã§ã«ãšããæå³ã§ã¯ãããŸãããBourne ã·ã§ã«ã¯ POSIX ã«æºæ ããŠããªããããåçš UNIX ã§ã¯ Bourne ã·ã§ã«ãã POSIX ã·ã§ã«ãžã®ç§»è¡ãå¿
èŠã«ãªããŸãããããããã§ã«å€ãã®è³ç£ããã£ãåçš UNIX ã§ã¯ãããç°¡åã« Bourne ã·ã§ã«ã POSIX ã·ã§ã«ã«çœ®ãæããããšã¯åºæ¥ãŸãããPOSIX ã·ã§ã«ã®ããã°ã©ã å㯠sh ã§ããããã㯠/bin/sh ãšããæå³ã§ã¯ãããŸãããå®ã¯ POSIX ã§ã¯ sh ããããã£ã¬ã¯ããªã¯ã©ãã§ãè¯ãããšããããã£ã¬ã¯ããªæ§é 㯠/dev/null ã /tmp ãªã©äžéšã®ãã¹ãé€ããŠæ±ºãŸã£ãŠããŸããããã㯠OS ã®äºææ§ãä¿ã€ãšããç¹ã§æå³ããããŸããã€ãŸã /bin/sh ã Bourne ã·ã§ã«ãšããŠæ®ãããŸãŸãå¥ã®ãã£ã¬ã¯ããªã« POSIX ã·ã§ã«ã眮ãããšããŠã POSIX æºæ ã® OS ã«ãªããšããããšã§ãã
ã·ã§ã«ã®åäœã POSIX ãå®ãã仿§ã«å€æŽããããšã¯ãæ¢åã®ã·ã§ã«ãšã®äºææ§ããªããªãããšãæå³ããŠããŸããPOSIX ã«æºæ ãããããã« OS ãã¢ããã°ã¬ãŒãããæã«æ¢åã®ã·ã§ã«ã¹ã¯ãªãããåããªããªã£ãŠããŸãã°æ¬æ«è»¢åã§ããOS ãå£ããããªæšæºèŠæ Œã§ããã° OS ãã³ããŒã¯ãã®æšæºèŠæ Œãæ¡çšããããšãããããŸãããPOSIX ããã®ããšååçè§£ããŠãããããPOSIX ã¯äºææ§ãä¿ãŠãããã«é æ ®ããéå»ã®å®è£ ããã®å€æŽãæå°éã«ä¿ã€ããšãæ°ãããã®ãäœãåºãã®ã§ã¯ãªãæŽå²çãªæ £ç¿ãææåããããšãæ¹éãšããŠããã®ã§ãã
äžäŸãäžãããš Solaris 10 (2005) ã§ã¯ /bin/sh 㯠Bourne ã·ã§ã«ã§ãã /usr/xpg4/bin/sh ã« POSIX ã·ã§ã«ããããŸããPOSIX èªèšŒãåããïŒå€ãïŒUNIX ã¯ãã®ããã«ããŠäºææ§ãä¿ã¡ãªãã POSIX ã«æºæ ãããŠããŸãããã®ãã㪠OS ã®å®è£
ã¯äºææ§ã®èгç¹ãã劥åœã ãšæããŸããããããã/bin/sh 㯠Bourne ã·ã§ã«ã§ããããšããèšèãé·ãæ®ã£ãŠãããå€ãã®äººãåéããããŠããåå ã®äžã€ã§ã¯ãªãããšèããŠããŸãã
Solaris 11 (2011) ã§ã¯ /bin/sh 㯠ksh93 ã«çœ®ãæãããŸããïŒåç
§ïŒãAIX ãªã©ãã®ä»ã®åçš UNIX ã§ãåæ§ã§ãïŒåç
§ïŒãä»ãã/bin/sh 㯠Bourne ã·ã§ã«ã§ã¯ãªã POSIX ã·ã§ã«ã®ã©ãããã§ãããã㊠Bourne ã·ã§ã«ã䜿ããªãã£ã LinuxãFreeBSDãmacOS ã§ã¯ /bin/sh ã Bourne ã·ã§ã«ã ã£ãããšã¯ãããŸããã
POSIX ã¯æ¡åŒµæ©èœã®å®è£ ã劚ããªã
POSIX ã®éèŠãªæ¹éã®äžã€ã¯ãæ¡åŒµæ©èœã®å®è£ ãããŸãããªãããšãã§ããäŸãã° bashãksh93ãzsh ãšèšã£ãã·ã§ã«ã¯POSIX ã·ã§ã«ã§èŠå®ãããŠããªãå€ãã®æ¡åŒµæ©èœãæã£ãŠããŸãããæ¡åŒµæ©èœã¯æšæºèŠæ Œã«éåããŠããåæã«æ¡åŒµãããªããŠèš±ããã·ã§ã«ã ãGNU ãåæã«æ¡åŒµãããªããã®ããã«èããŠãã人ãããããã§ããããã㯠POSIX ã®æ¹éããããã°ééã£ãèãæ¹ã§ãããPOSIX æšæºèŠæ Œãšãããã®ãçè§£ããŠããŸããããããã POSIX ã®æ¹ãåŸããçå®ãããŠããæåããã·ã§ã«ã«å®è£ ãããŠããæ©èœãããããã§ãæšæºãæ¡åŒµããæ©èœããšåŒã¶ã®ãããããªè©±ã§ãã
POSIX ã¯æ¹èšãããªãæšæºèŠæ Œã§ã¯ãããŸããããã§ã«èª¬æããŸãããè¿ããã¡ã« POSIX.1-202x (Issue 8) ã«æ¹èšãããŸããååã®å€§ããªæ¹èšã¯ POSIX.1-2008 (Issue 7) ã§ãä»å㯠14 幎ã¶ããšã¡ãã£ãšé·ããªã£ãã ãã§ããäºææ§ãä¿ã€ããšãåºæ¥ãªã倿Žã¯åºæ¬çã«ãããŸããããšããããããã©ã® OS ãäºææ§ãä¿ã£ãŠéçºãããŠãããPOSIX ã¯ãããææåããŠããã ããªã®ã§äºææ§ãä¿ãããŠããã®ã¯åœç¶ã§ããïŒãã ã POSIX 㯠ANSI C ãèŠæ Œã®äžéšãšããŠæ¡çšããŠããããã«ãANSI C ã§å€§ããªå€æŽããã£ãå Žåã«ã¯ãäºææ§ãä¿ãŠãªãå Žåãããããã§ãïŒ
POSIX ã®æ¹èšãšããã®ã¯ææ°ã®å®è£ ãæšæºèŠæ Œã«åãå ¥ããããšã§ããã§ã¯ãã®ææ°ã®å®è£ ãšã¯ãªãã®ããšã§ããããïŒããã¯çŸåšã®æ¡åŒµæ©èœã®ããšã§ããPOSIX ãå å°ããŠæ°ããæ©èœãäœãããšã¯ïŒåºæ¬çã«ïŒãããŸãããæ¢åã®å€ãã®å®è£ ã«åãå ¥ãããããç§»æ€æ§ãé«ããšèªããããæ¡åŒµæ©èœããæšæºèŠæ Œã«åãå ¥ãããšããæ¹éã§ãã以äžãæ¡åŒµæ©èœãå®è£ ããããšãèªããªããã°ãPOSIX ã®æšæºèŠæ Œãæ¹åããããšãã§ããããã€ãŸã§ã 30 幎ãåã®ä»æ§ã§åºå®åãããããšã«ãªã£ãŠããŸããŸãããããã£ãŠæ¡åŒµæ©èœãå®è£ ãããšããŠã POSIX éåã«ã¯ãªããªãããã«æç« ã«æ°ãé ã£ãŠæšæºèŠæ Œãçå®ãããŠããŸããããå®è£ ãããæ¡åŒµæ©èœã POSIX éåã«ãªã£ãŠããå Žåãéã«ãPOSIX ãæ¡åŒµã劚ããŠãããã°ããšã㊠POSIX æšæºèŠæ Œã®æ¹ãä¿®æ£ãããããšãããããŸãããã¡ããã·ã§ã«ã«é¢ããŠããæ¡åŒµæ©èœãå®è£ ããã·ã§ã«ã POSIX æºæ ã§ããããšèªããŠããŸãã
POSIX ã«æºæ ãããbashãkshãzsh ãªã©ããç§»æ€æ§ãé«ãæ¡åŒµæ©èœïŒå€ãã®ã·ã§ã«ã§åãããã«äœ¿ããæ©èœïŒãããæ¬¡ã® POSIX ã·ã§ã«ã®æšæºèŠæ ŒãäœãããŸãã POSIX.1-202x (Issue 8) ã§ã¯äŸãã° set -o pipefail ã远å ãããŸããpipefail ã®è¿œå ã POSIX ã«ææ¡ãããã®ã¯ 2013幎11æã§ãããã㯠ksh93g (1998) ã§æåã«å®è£
ãããbashãzsh ãªã©å€ãã®ã·ã§ã«ã§ãå®è£
ãããŸããããå€ã ksh88 ãçŸæç¹ã§ã®ææ°ã® dash (0.5.11.5) ã«ã¯å®è£
ãããŠããããFreeBSD sh ã§ã¯ 2019幎7æ9æ¥ ãªãªãŒã¹ã® 11.3 ã§å®è£
ãããæ©èœã§ããash ç³»ã¯äŒçµ±çã«æ¡åŒµæ©èœãå®è£
ããªãåŸåã«ãããŸãããæ¡åŒµæ©èœãå
šãŠã®ã·ã§ã«ã§å®è£
ãããããšã¯ãŸããããŸãããã代衚çãªã·ã§ã«ã§å®è£
ããããã®ãæ°ããæšæºèŠæ Œã«ãªã£ãŠããããããŠå®è£
ãããŠããªãã·ã§ã«ãåŒã£åŒµã£ãŠãããšããæµãã§ãããšããããšãããããšæããŸããPOSIX ãæ¹èšããããã«æ¡åŒµæ©èœã¯éèŠãªååšãªã®ã§ãã
POSIX ã·ã§ã«ãšãã®æãç«ã¡
ash ç³» (sh, dash, Busybox ash)
ash ç³»ã®ã·ã§ã«ã¯äžè¬çã«çŽç²ãª POSIX ã·ã§ã«ã«è¿ãã·ã§ã«ã§æ¡åŒµæ©èœãããŸãæã£ãŠããŸãããæšæºèŠæ Œã«è¿ãã·ã§ã«ãšèšãã°èããã¯ããã§ãããPOSIX ã·ã§ã«ã®çºå±ã劚ããŠããäœæ©èœãªã·ã§ã«ãšèšãããããããŸããããã£ãšã POSIX ãããã¯ããã£ãŠããã®ã§ãash ç³»ã®ã·ã§ã«ã§å®è£ ãããŠããªãããšãçç±ã«ãæ¡åŒµæ©èœãåãå ¥ããªããšã¯èããŠãªãããã§ããã
ash ã¯å ã UNIX æŠäºã§ Bourne ã·ã§ã«ã䜿ãããªã£ã BSD Unix ã®ããã«éçºãããŸããã系統å³ã§ã¯æåã® ash ãã POSIX Family Shells ã«å«ããŠããŸããå¹ãåºãã«æžããããã«ãæåã® ash 㯠POSIX æºæ ã§ã¯ãããŸãããBourne ã·ã§ã«ã®ã¯ããŒã³ãšããŠéçºãããããïŒå€å°ã®éãã¯ãããŸããïŒå ã 㯠Bourne ã·ã§ã«çžåœã®æ©èœããæã£ãŠããŸããã§ãããããã ash ç³»ã®ã·ã§ã«ã«æ¡åŒµæ©èœãå°ãªãçç±ã®äžã€ã§ãããã
ash 㯠1991 幎㫠4.xBSD ã«æ¡çšãããåŸã1992 幎㫠POSIX ã·ã§ã«ãæšæºåãããé ãã POSIX.2 ãžã®æºæ äœæ¥ãéå§ãããŸããash ç³»ã·ã§ã«ã®å€æŽå±¥æŽïŒAsh (Almquist Shell) VariantsïŒãèŠãŠã¿ããšããã®äœæ¥ã«ã¯çµæ§æéãããã£ãããã§ 2000 幎ãéããŠããŸã POSIX.2 æºæ ãžã®ä¿®æ£ãå ¥ã£ãŠããããã§ãããã®éã1993 幎㫠NetBSD sh ãšããŠæ¡çšããã1996 幎㫠FreeBSD sh ãšããŠæ¡çšããã1997 幎㫠Debian Linux ãž dash ãšããŠç§»æ€ããã2001 幎㫠dash ã Busybox ash ãšããŠæ¡çšãããšãããã€ãã®ãã©ãŒã¯ãèªçããŠããŸãã
FreeBSD sh ã NetBSD sh ã¯åºæ¬çã« POSIX ãžã®æºæ äœæ¥ãè¡ã£ãã ããªã®ã§ãã»ãšãã©åãåããããŠããŸãããããããã® OS ã§ä¿®æ£ãå ããŠããããã«å³å¯ã«ã¯ OS åºæïŒãã® OS ã§ãã䜿ããªãïŒã®ã·ã§ã«ã§ãããããã Linux ç§»æ€çã¯ãªããšæããŸããäŸãã° FreeBSD 13 ã® sh ã«ã¯ãªã POSIX ã¢ãŒã (set -o posix) ã NetBSD sh ã«ã¯ãããŸããæ¬¡æ POSIX Issue 8 ã§æšæºåãããå¯èœæ§ãé«ã Dollar-Single QuotesïŒè°è«äžïŒã case ã®ãã©ãŒã«ã¹ã«ãŒ ;& ïŒãã©ããïŒãå
è¡å®è£
ãããŠããããif ã®äžã空ã«ããŠããšã©ãŒã«ãªããªããšãã POSIX æºæ ã§ã¯ãªãåäœãããã®ã§å®å
šã«åãã ãšã¯æããªãã»ããè¯ãã§ããããã¡ãªã¿ã«ãã®åé¡ã¯ POSIX ã¢ãŒãã® NetBSD sh ã dash ã§ã¯ãšã©ãŒã«ãªãããã«ä¿®æ£ãããŠããŸãã
# FreeBSD sh ã NetBSD sh ã§ã¯ãããåããŠããŸã
if true; then
# POSIX æºæ ã§ãããªããããã空ïŒãŸãã¯ã³ã¡ã³ãã®ã¿ïŒã«ã¯ã§ããªã
fi
# NetBSD sh ã® POSIX ã¢ãŒããªããšã©ãŒã«ãªã
set -o posix
if true; then
: # POSIX æºæ ãªãäœãããã®ã³ãŒããå¿
èŠïŒ: ã¯äœãããªãã³ãã³ãïŒ
fi
# åè Bourne ã·ã§ã«ãdashãbashãkshãmksh ã§ã¯ããã©ã«ãã§ãšã©ãŒã«ãªã
# yash 㯠POSIX ã¢ãŒãã§ãšã©ãŒã«ãªããzsh ã§ã¯ãšã©ãŒã«ãªããªã
dash 㯠NetBSD sh ãããã©ãŒã¯ããã·ã§ã«ã§ããåºæ¬çã« FreeBSD sh ã NetBSD sh ãšåããããªåããããŠããŸããæ¬¡æ POSIX Issue 8 ã§æšæºåãããæ©èœã¯ãŸã æªå®è£ ã®ããã§ãããŸã ãã©ããæ®µéãªã®ã§å®è£ ããŠããªããŠãäžæè°ã§ã¯ãããŸããããããŸãææ°ã® POSIX ãžã®æºæ ãæ¥ãã§ããªããããªæ°ãããŸãïŒæ¥ããããªãã®ã§ããããŸãããïŒã
BusyBox ash ã¯å
㯠dash ããã®ãã©ãŒã¯ã§ããæè¿ã¯ bash ã®æ¡åŒµæ©èœãåã蟌ãã§ãããash ç³»ã®äžã§ãã£ãšã髿©èœãªã·ã§ã«ãšãªã£ãŠããŸããbash ã®æ¡åŒµæ©èœãšããã®ã¯ [[ ]] ãæ¡åŒµããã倿°å±éïŒ${VAR//a/b} ãªã©ïŒãããã»ã¹çœ®æïŒ<(cmd)ïŒãšãã£ãä»ã®ã·ã§ã«ã§ãå®è£
ãããŠããæ©èœã ãã§ã¯ãªããã·ã§ã«å€æ° BASH_XTRACEFD ãšèšã£ãæããã« bash ã®æ©èœã§ãããªããã®ãŸã§åã蟌ãã§ããŸãããã㯠BusyBox ãçŸå®ã®ã·ã§ã«ã¹ã¯ãªãããå®è¡ã§ããç°å¢ãäœãããšãç®æããŠããããã§ããçŸå®ãšã㊠bash ã¹ã¯ãªããã¯å€ã䜿ãããŠããããã§ãããå€ãã®ã·ã§ã«ã¹ã¯ãªãããåããã«ã¯ bash çžåœã®æ©èœãåããŠããªããã°ãªããªããšããã®ã¯ BusyBox ã®èãæ¹ãšããŠã¯è³æ¥µåœç¶ã§ããBusyBox ash ã®ãœãŒã¹ã³ãŒãã®ã³ã¡ã³ããèªããš bash ãšã®äºææ§ãæèããŠããããšãã¯ã£ãããšããããŸãã
ksh ç³» (ksh88, ksh93, ksh93u+m)
ksh 㯠UNIX ãéçºãã AT&T ã§ Bourne ã·ã§ã«ã®åŸç¶ãšããŠéçºãããã·ã§ã«ã§ããBourne ã·ã§ã«ã®ãœãŒã¹ã³ãŒããå ã«éçºãå§ãŸã£ãŠããããã§ããUNIX System V R4 ã«å«ãŸããããäž»ã«åçš UNIX ã§åºã䜿ãããŠããŸããksh88 ã¯ããã§ããããŸããããksh93 ã¯ã¹ã¯ãªããèšèª (awk, perl) ãããªãæèããŠããå€ãã®æ¡åŒµæ©èœãæã£ãã·ã§ã«ã§ããéå»ã«ã¯ã°ã©ãã£ã«ã«ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãäœãã®ã«ã䜿ãããŠããããã§ããªããžã§ã¯ãæåããã°ã©ãã³ã°çãªããšãŸã§ã§ãããã bash ãããã¯ããã«æ¡åŒµæ©èœãå€ãïŒã¹ã¯ãªããèšèªãšããŠã®æ©èœãªã zsh ãè¶ ããŠããïŒãšèšã£ãŠæ§ããªãã¬ãã«ãªã®ã§ããããã®å®åã¯åºãç¥ãããŠããªãããã«æããŸãïŒå人çã«ã¯ã·ã§ã«ã¹ã¯ãªããã§ãããŸã§ããå¿ èŠã¯ãªããšæã£ãŠããã®ã§ ksh93 ã®å®åã¯ã·ã§ã«ãšããŠã¯éå°ã«æããŸãïŒãksh ã®è©³ããæŽå²ãªã©ã«ã€ããŠã¯éçºè ã§ãã David Korn æ¬äººã 1994 幎ã®è«æã§ãŸãšããŠããã®ã§ãksh - An Extensible High Level Languageã(PDF) ãåç §ããŠãã ããããŸãå ¬åŒãµã€ãã®ããã¥ã¡ã³ãã«ãå€ãã®ææžãå ¬éãããŠããŸãã
KornShell FAQ ã«ãããš KornShell ã¯æ£ç¢ºã«ã¯ã¹ã¯ãªããèšèªã®ååã§ããã®å®è£ ã ksh ã§ããã¹ã¯ãªããèšèªèªäœã¯ãããªãã¯ãã¡ã€ã³ã§èª°ã§ãåå®è£ å¯èœãšãªã£ãŠããŸããã ksh èªäœã¯ãããã©ã€ãšã¿ãªãªãœãããŠã§ã¢ã§ããïŒåŸã«ãªãŒãã³ãœãŒã¹åãããŸãïŒãæåã®ããŒãžã§ã³ã¯ 1983 幎ãšãããŠããŸãã1986 幎㫠ksh86 ãéå®çã«å ¬éãããããã§ãããåºã䜿ãããã®ã¯ ksh88 ã§ãããã® ksh88 ãããŒã¹ã« POSIX ã·ã§ã«ã®æšæºèŠæ Œãçå®ãããŸãããPOSIX 㯠Bourne ã·ã§ã«ã ãã§ã¯ãªã ksh88 ãšãäžéšäºææ§ããªã仿§ã§æšæºèŠæ Œãçå®ããã®ã§ãªãªãžãã«ã® ksh88 㯠POSIX ã«æºæ ããŠããŸããããã ã UNIX ãã³ããŒã¯ ksh88 ãä¿®æ£ã㊠POSIX ã·ã§ã«ãšããŠå©çšããŠããããã§ãïŒè©³çްã¯èª¿ã¹ãŠããŸããïŒãä»ã®ã·ã§ã«ãšåãã ksh88 ã现ããããŒãžã§ã³ã¢ãããç¹°ãè¿ããŠããã88cã88dã88e ã®ããã«åŸãã«ã¢ã«ãã¡ãããã远å ãããŸããksh88 ã®æçµçã¯ãããã 1993 幎ã«ãªãªãŒã¹ããã 88i ã§ããå€ã ksh ã®ããŒãžã§ã³ã«é¢ããŠã¯ Some ksh versions available ãåç §ãããšè¯ãã§ãããã
ksh88 ã®åŸç¶ã§ãã ksh93 㯠POSIX æºæ ãç®æããäžéš ksh88 ãšã¯å®å šãªäºææ§ãä¿ããã«äœããã髿©èœãªã·ã§ã«ã§ããksh93 㯠ksh88 ããåŒãç¶ããããã©ã€ãšã¿ãªãªãœãããŠã§ã¢ã§ããããã®ãã BSD Unix ã§ã¯äž»ã« ash ç³»ã®ã·ã§ã«ããLinux ã§ã¯ bash ãåºã䜿ãããããã«ãªããŸãããksh93 ã®ãœãŒã¹ã³ãŒã㯠2000 幎ã«å ¬éãããŸãããããªãŒãã³ãœãŒã¹ãšãªã£ãã®ã¯ 2005 幎㮠ksh93q ããã§ãããã®ãã 2005 幎ãéããé ãããããã Linux ãªã©ã§ ksh ãããã±ãŒãžãšããŠè¿œå ãããããã«ãªã£ãããã§ããããããã§ã«äžã®äžã¯ Linux ã®æä»£ãšãªã£ãŠãã bash ãå§åçãªã·ã§ã¢ãå ããŠãããçµå± ksh93 ã¯åçš UNIX 以å€ã§ã¯ããŸã䜿ãããŠããªãããã«æããŸãã
ksh93 ã¯æ¬åœã«é«æ©èœãªã·ã§ã«ã§ãawk ã ãã§ã¯ãªãïŒåæã®ïŒPerl ãšåŒµãåããã¬ãã«ã®ã¹ã¯ãªããèšèªãšããŠã®æ©èœãåããŠããŸããã¬ãã·ã«ã«å€æ° my ããªããžã§ã¯ãæåã«å¯Ÿå¿ãã Perl 5.0 ã®ç»å Žã 1994 幎ã§ãã®åœæã®æ¯èŒã§ããããšã«æ³šæããŠãã ãããå
ã®è«æã®å
容ãã awk (ãå€éšã³ãã³ãïŒã®åŒã³åºãã§é
ããªããšããåé¡ã«å¯ŸåŠããããã«æ©èœã远å ããŠãããšããããšãããããŸããbash ã®æ¡åŒµæ©èœãå«ããã®ã«ããã bashism ãšæ§çã«æããããŠããŸããããã®å
ããã©ããšå®ã¯å€ãã® bash ã®æ¡åŒµæ©èœã¯ ksh88 ãŸã㯠ksh93 ãã«ãŒãã§ããksh ã UNIX ãéçºãã AT&T ã®ã·ã§ã«ã§ããããšãèžãŸãããšãbashism 㯠UNIX ã·ã§ã«ãæåããåããŠããå
¬åŒæ©èœãã§ãããåŸãããã£ãŠãã POSIX ã·ã§ã«ãæšæºåããŠãªããããšèšã£ãŠ bashism ãéé£ããããšã¯ãééãããããšããã§ããé
åãããã»ã¹çœ®æãšãã£ãæ©èœã UNIX ã®æ¬¡ã§ãã Plan 9 ã® rc ã·ã§ã«ã§å°å
¥ãããŠããããšãèãããšããããã®æ©èœã¯å¿ã¿å«ã bashism ã§ã¯ãªãã·ã§ã«ã®æªæ¥ã®æ©èœã®å
åãã§ãããPOSIX ã·ã§ã«ã 20 幎以äžåã®ã·ã§ã«ã«æªã 远ãã€ããŠããªãã ãã§ãã
ksh93 ã¯é«æ©èœãªã·ã§ã«ã§ããããã°ãããªãå€ãã·ã§ã«ã§ãããå UNIX ãã³ããŒã¯ããããããããåœãŠãŠäœ¿ã£ãŠããããã§ããAT&T å ¬åŒã® ksh93 㯠2012 幎㮠ksh93u+ ãæçµããŒãžã§ã³ã§ããDavid Korn 㯠AT&T ãå»ããŸãããããã®åŸãéçºçã§ãã ksh93v- ã®éçºã¯ 2014 幎ãŸã§ç¶ããããŸããããã®åŸãã°ããæŸçœ®ãã 2017 幎ããã³ãã¥ããã£ã®æã«ãã£ãŠéçºãåéãã 2019 幎ã®ç§ã«ksh2020 ããªãªãŒã¹ãããã®ã§ããäºææ§ã®åé¡ãçºçãæŸæ£ãããŸããããã®åŸå¥ã®éçºè (Martijn Dekker) ã®æã«ãã£ãŠ 2020幎5æãã ksh93u+ ããåå§åãããããŸã§ã®å€ãããããé©çšããããã 1000 ã®ãã°ãä¿®æ£ããksh93u+ ããªãªãŒã¹ããã 2012幎8æ1æ¥ã®ã¡ããã© 10 幎ç®ã§ãã 2022幎8æ1æ¥ã« ksh93u+m 1.0.0 ããªãªãŒã¹ãããŸãããããŒãžã§ã³çªå·ã®è¡šèšãå€ãã£ãŠãã ksh93u+mïŒm 㯠modified ã®æå³ïŒïŒã®éšåã¯åºå®ã§ã1.0.0 ã®éšåãæ°ããããŒãžã§ã³çªå·ã§ãããªããã°ã®ä¿®æ£ã¯ç¶ããããŠããçŸæç¹ã§ã®ææ°ç㯠1.0.4 ã§ãããŸã ãã°ãã现ãããã°ä¿®æ£ã¯è¡ãããã®ã§ã¯ãªãããšæããŸããããããŸã§ã®å€æ°ã®ãã°ã¯ä¿®æ£ããæãå®å®ãã ksh93 ã®ããŒãžã§ã³ãšãªã£ãŠãããæ¬¡æ Debian ãªã©ã§ãæ¡çšãããããã§ãã
POSIX ãæ¹å®ãããåã« ksh93u+m ããªãªãŒã¹ã§ããã®ã¯è¯ãã¿ã€ãã³ã°ã ãšæããŸããksh93 ãæ¡çšããŠããåçš UNIX ãããå®å®ãã ksh93u+m ã«çœ®ãæããããšãå¯èœã«ãªã£ãããã§ãããŸããªãŒãã³ãœãŒã¹çã§ããããã¡ãã Linux ã§ã ksh93u+m ã¯åäœããŸããã€ãŸããã㯠UNIX ãã Linux ãžã®ç§»è¡ã®éã«ã·ã§ã«ã倿ŽããªããŠè¯ããªã£ãããšãæå³ããŠããŸããã©ããã§ ksh ã¹ã¯ãªãããã bash ã¹ã¯ãªãããžã®å€æããããä»äºãèŠãããŸããããããã ãã®è©±ããããªäºããªããŠãè¯ãã®ã§ãããã£ãšãå€éšã³ãã³ãã®äºææ§ã¯å¥ã®è©±ïŒãããããã£ã¡ãã¡ã€ã³ïŒã§ãããä»åŸã®ããã«ã bash ã¹ã¯ãªããã«å€æããŠãããããšããçç±ããããã®ã§æå³ã®ãªãäœæ¥ã ãšã¯æããŸãããã
ksh93u+m ã¯ååããæšæž¬ã§ããããã«ã倧ããªæ©èœè¿œå ã¯è¡ãããåºæ¬çã« ksh93u+ çžåœã®æ©èœãç¶æãç¶ããŸãããã ã ksh93 åœåããã®ç®æšã§ãã POSIX æºæ ãå®çŸããã®ã«å¿
èŠãª POSIX ã¢ãŒãïŒset -o posix) ã®å®è£
ã printf -v ãšèšã£ãæ°æ©èœããããã«è¿œå ãããŠããŸãã
pdksh ç³» (OpenBSD ksh, mksh)
pdksh 㯠Public Domain ksh ã®ç¥ã§ããã®åã®éã KornShell ã®ãããªãã¯ãã¡ã€ã³çã§ããksh88 ããããã©ã€ãšã¿ãªã§ãã£ãããã« ksh88 ã®åå®è£ ïŒäžéš ksh93 ã®æ©èœã®åã蟌ã¿ïŒãè¡ã£ãã·ã§ã«ã§ãksh88 ãšãœãŒã¹ã³ãŒãã¯å ±æããŠããŸãããksh88 ãšã®äºææ§ããããšããããšã«ãªã£ãŠããŸããå®å šã§ã¯ãããŸããããã ãé åãªã©ã®æ©èœã¯å®è£ ãããŠããŸãããããªãã¯ãã¡ã€ã³ã§ãããã Linux ã§ãæ¯èŒçæ©ããã¡ã«ããã±ãŒãžã远å ãããããã§ãããªãªãžãã«ã® pdksh ã®éçºã¯ 2000 幎é ãŸã§ç¶ããŠããŸãã2000 幎ãšããã®ã¯ ksh93 ã®ãœãŒã¹ã³ãŒããå ¬éããã幎ã§ããããæã«éçºããããããã«æããŸããDebian ã§ã¯ pdksh ããåŸè¿°ã® mksh ã«çœ®ãæããããŠããŸãã
OpenBSD ã§ã¯ /bin/sh ãšããŠããŸã OpenBSD ksh ãšã㊠pdksh ãæ¡çšïŒãã©ãŒã¯ïŒããŠããŸããOpenBSD ã§ã¯ ksh ãšããååã§ pdksh ãå®è¡ã§ããŸãããAIX ã Solaris ãªã©ã® AT&T ã®æ¬ç©ã® ksh ãšã¯ç°ãªãå®è£
ãªã®ã§ééããªãããã«ããŠãã ãããOpenBSD ã®äžéšã§ãããã pdksh ãšã¯ç°ãªãä»ãã¡ã³ããã³ã¹ãç¶ããŠããŸããOpenBSD ksh 㯠pdksh ããã³ ksh88 çžåœã®æ©èœãç¶æããç¶ããŠããããã§ãããŸã loksh ã oksh ãšã㊠Linux ãªã©ä»ã® OS ãžã®ç§»æ€çããããŸãã
mksh (The MirBSD Korn Shell) 㯠2002 幎㫠OpenBSD 3.1 ãããã©ãŒã¯ãã MirOS BSD ã®ããã®ã·ã§ã«ã§ãããå€ãã® OS ã«ç§»æ€ãããŠããŸããLinux ã§ãåäœããŸãããAndroid ã§ãã·ã¹ãã ã·ã§ã«ãšããŠæ¡çšãããŠããããã§ããã¹ã¯ /system/bin/sh ã§ããOpenBSD ksh ããåŒãç¶ããpdksh 系統ã®ã·ã§ã«ã§ããããããªãã«æ¡åŒµæ©èœãå®è£
ãããŠããŸããæ¡åŒµã¯ bash ã ksh ãåèã«ããŠãããšæããŸããå°ã
ç¬èªã£ãœããšãããããæãã§ãããã¡ããã¡ã³ããã³ã¹ãç¶ããŠããŸãã
yash
yash ã¯ç¥å
ãšãªãã·ã§ã«ãæãããäžçã§æãæ£ç¢ºãª POSIX èŠæ Œæºæ ãç®æããŠéçºãããã·ã§ã«ã§ãã çŸåšã® 2.x 系㯠2008 幎é ããéçºãããŠãããéçºè
ã¯æ¥æ¬äººã® @magicant ããã§ããPOSIX æºæ ã§ããããã¯æ¡åŒµæ©èœãæããªããšããæå³ã§ã¯ãããŸãããããã©ã«ãã§ã¯é
åã [[ ... ]] ãšèšã£ãããç¥ãããæ¡åŒµæ©èœãå®è£
ãããŠããŸãã
yash ã®ç¹åŸŽçãªæ©èœã¯ãä»ã® POSIX ã·ã§ã«ãšã¯ç°ãªã POSIX ã¢ãŒããæå¹ã«ãããšæ¡åŒµæ©èœãç¡å¹ã«ãªããšããããšã§ããçŸæç¹ã§ã¯ãŸã æªãªãªãŒã¹ã§ãããæ¬¡ã®ããŒãžã§ã³ 2.54 ã§ã¯ãããæŽã«æŒãé²ã¿ãPOSIX ã§èŠå®ãããŠãããåäœãæå®ãããŠããªãã³ãã³ãïŒäŸ local ã³ãã³ãïŒã䜿ããšãšã©ãŒã«ãªãäºå®ã§ããã€ãŸããã㯠yash ã® POSIX ã¢ãŒãã䜿ãã°ãPOSIX ã§èŠå®ãããŠããªãã·ã§ã«ã®æ©èœã䜿ã£ãŠãããã©ããã調ã¹ãããšãã§ããyash ã§åãã°ä»ã®ã·ã§ã«ã§ãåãããã«ãªãå¯èœæ§ãé«ããšããããšã§ãããã ãéä¿¡ã¯ããªãã§ãã ãããå€éšã³ãã³ãã®ç§»æ€æ§ã«é¢ããŠã¯ã·ã§ã«ã®å¯Ÿè±¡å€ã§ãããã·ã§ã«ã®æ©èœã§ãã£ãŠãã·ã§ã«ã«ãã£ãŠåäœã«éãããããŸãããã·ã§ã«ãªãã·ã§ã³ã®æ¡åŒµæ©èœãªã©ã¯ç¡å¹ã«ãªããªãããã§ãã
äœè«ã§ããçŸåš yash 㯠Rust ã§ã®åå®è£ ãè¡ãããŠããããã§ããæ£åŒãªãªãŒã¹ãããæã楜ãã¿ã«åŸ ã£ãŠããŸãã
bash
説æã®å¿
èŠããªããããæåãªãçŸåšæã䜿çšãããŠããã·ã§ã«ã§ããå€ãã® Linux ã®ãŠãŒã¶ãŒã·ã§ã«ãšããŠäœ¿ãããRedHat ç³» Linux ã macOS ïŒææ°ç macOS 13 ãå«ãïŒãªã©ã§ã¯ /bin/sh ãšããŠã䜿ãããŠããŸããæ¡åŒµæ©èœãå€ã ksh93 ããã·ã§ã«ãšããŠåããŠããã¹ãæ©èœãå³éžããŠå®è£
ããŠããæãã§ãã©ã³ã¹ãåããã·ã§ã«ã§ãã
ä»ã®å€ãã®ã·ã§ã«ãšåãã§éçºãå§ãŸã£ãã®ã¯ POSIX æšæºååã§ããPOSIX ãæšæºåã®éã«ä»æ§ã倿Žãããããåæã® bash 㯠POSIX ã«æºæ ããŠããŸããã§ãããéå»ã® bash ã®ããŒãžã§ã³ãšã®äºææ§ãš POSIX æºæ ãäž¡ç«ããããã«ãPOSIX ã¢ãŒããå°å
¥ã /bin/sh ãšããŠå®è¡ãããå Žåã¯èªåçã« POSIX ã¢ãŒããšãªãããã«ãªã£ãŠããŸããéèŠãªç¹ãšã㊠bash 㯠POSIX ã¢ãŒããæå¹ã«ãããšããŠãã»ãšãã©ã®æ¡åŒµæ©èœã¯ç¡å¹ã«ãªããŸãããbash 㯠POSIX ã§ã®æå®ãšã¯ç°ãªãåãã POSIX æºæ ã«ããã ãã§ãã£ãŠãPOSIX ãèªããŠããæ¡åŒµæ©èœã¯ POSIX éåã§ã¯ãªãããã§ããæ¡åŒµæ©èœã䜿ããšåœç¶ããããå®è£
ããŠãªã dash ãªã©ã§ã¯åããŸããããã©ã®ã·ã§ã«ã«å¯Ÿå¿ãããã¯èŠä»¶æ¬¡ç¬¬ã§ãããåããªããªãé察å¿ãšããã ãã§è¯ã話ã§ããéèŠãªã®ã¯ã©ã®ã·ã§ã«ã«å¯Ÿå¿ããã®ãèŠä»¶ãç¥ãããšãšãã©ã®ã·ã§ã«åãã®ã·ã§ã«ã¹ã¯ãªãããæžããŠããããèªåã§ææ¡ããŠããããšã§ãã
ææ°çã® bash 5.2 ã 2022幎9æ26æ¥ã«ãªãªãŒã¹ãããããšããããããããã«ãä»ãã¡ã³ããã³ã¹ãç¶ããŠããæ©èœåŒ·åãè¡ãããŠããŸããGNU ãããžã§ã¯ãã§éçºãããŠããã·ã§ã«ãªã®ã§å°æ¥æ§ãªã©ã«ã€ããŠãå®å¿ã§ããŸãããBSD ç³»ã®ã·ã§ã«ã®ããã« OS åºæã®ã·ã§ã«ã§ã¯ãªãïŒããããïŒã©ã® OS ã«ã§ãã€ã³ã¹ããŒã«ããŠåããããšãã§ããç§»æ€æ§ãé«ãã·ã§ã«ã§ãããããã©ãã§ãåãã·ã§ã«ã¹ã¯ãªãããå®è¡ããããã®ã·ã§ã«ãšããŠé©ããŠããŸãã
zsh
æããç¥ã人ãç¥ããšãã£ãæãã§åŒ·åãªã·ã§ã«ãšããŠæåã§ããããmacOS ã®ããã©ã«ãã®ãŠãŒã¶ãŒã·ã§ã«ãšããŠäœ¿ãããããã«ãªã£ãããäžæ°ã«ã¡ãžã£ãŒã«ãªã£ãæ°ãããŸããäžã€æ³šæã§ãã zsh ã«ãªã£ãã®ã¯ããã©ã«ãã®ãŠãŒã¶ãŒã·ã§ã«ã§ãã macOS ã® /bin/sh ã®å®äœã¯ä»ã bash ãªã®ã§åéãããªãããã«ããŠãã ããããŸã bash ã䜿ãç¶ããã人㯠Homebrew ãªã©ã§ææ°ã® bash ãã€ã³ã¹ããŒã«ããããšãããããããŸãããã¡ãããŠãŒã¶ãŒã·ã§ã«ã¯æ°ããã€ã³ã¹ããŒã«ãã bash ã®ãã¹ãæå®ããŠãã ããã
zsh ã¯å
ã
㯠ksh88 ãš csh (tcsh) ããããããããªã·ã§ã«ãç®æšã§ãããããã©ã«ãã§ã¯ POSIX ã«ã¯æºæ ããŠããŸããããshãbashãkshãcsh ã®åã·ã§ã«ã®åäœããšãã¥ã¬ãŒãããèšå®ãå€ãæã£ãŠãã emulate ã³ãã³ãã§ãããã®ã·ã§ã«ã®åäœã«åãæ¿ããäºãã§ããŸãããã ã csh ã®ãšãã¥ã¬ãŒãæ©èœã¯ããŸãè¯ããªããšæããŸããksh ãšåæ§ã«æ¡åŒµæ©èœãå€ãã·ã§ã«ã§ãããksh ã¯èšèªã®ææ³ã«æ¡åŒµæ©èœãå€ãã®ã«å¯ŸããŠãzsh ã¯ã¢ãžã¥ãŒã«ã倿°å±éã®æ©èœãå€ããšããããã«æ¡åŒµæ©èœã®æ¹æ³æ§ãéãããã«æããŸãã
zsh ã®ææ°ç㯠5.9 ã§ 2022幎5æ14æ¥ã«ãªãªãŒã¹ãããŠããŸãããã¡ããç©æ¥µçã«ã¡ã³ããã³ã¹ãç¶ããŠããæ©èœåŒ·åãããç¶ããŠããŸãã
é POSIX ã·ã§ã«
æã¯ Bourne ã·ã§ã«ãš C ã·ã§ã«ãããªãã£ã UNIX ã·ã§ã«ãã仿¥ã§ã¯å€ãã®ã·ã§ã«ããããŸãããããã®å€ãã¯ç¬èªã®ç®æšãæ²ããŠããããã㊠POSIX ã«æºæ ããŠããŸãããç§ã¯äœ¿ã£ãŠããªãã®ã§è©³ãã解説ã¯åºæ¥ãŸããããã€ã³ã¿ã©ã¯ãã£ãã·ã§ã«ãšããŠãã·ã§ã«ã¹ã¯ãªãããšããŠãããåªããã·ã§ã«ãç®æããŠéçºãè¡ãããŠããŸãã
æ¯èŒçæ©ã段éã«éçºããç¥å床ãé«ã fish 㯠2005 幎ã«éçºãå§ãŸã£ãŠããŸããxonshãionãelvishãnushell ãšãã£ãã·ã§ã«ã¯ 2010 幎代äžåããåŸåã«ãããŠéçºãå§ãŸã£ãŠããŸããä»ã«ãæåãªã·ã§ã«ãšã㊠PowerShell ããããŸãããã¡ã㯠Windows æåããã®èŒžåºã§ UNIX ã·ã§ã«ã®èãæ¹ãšã¯å€§ããç°ãªã£ãŠããŸãããLinux ã macOS ã§ã䜿ãããšãåºæ¥ãŸãã
ã·ã§ã«ã®æªæ¥
ã·ã§ã«ã¯èªç±ã«éžã¶ããšãåºæ¥ã
ã·ã§ã«ã®èµ·æºã¯ UNIX ã§ã¯ãªã CTSS ãšåŒã°ããã¿ã€ã ã·ã§ã¢ãªã³ã°ã·ã¹ãã ã® RUNCOM (1963) ã«ãããšèšãããŠããŸããã·ã§ã«ãšããçšèªããã®æã«çãŸããŸãããCTSS ã®ã·ã§ã«ã¯ UNIX ã·ã§ã«ãšã¯ç°ãªããã«ãŒãã«ã®äžéšã ã£ãããã§ããUNIX ã·ã§ã«ã®å€§ããªæ¹åã¯ããããäžè¬çãªãŠãŒã¶ãŒããã°ã©ã ãšããŠå®è£ ãããããã«åé¢ãããããšã§ãããã®ãããã§ Thompson shell ããå§ãŸããBourne ã·ã§ã«ã C ã·ã§ã«ãªã©ãçµãŠå€ãã®ã·ã§ã«ãèªçããèªåã®å¥œããªã·ã§ã«ã䜿ãããšãåºæ¥ãããã«ãªããŸãããããã¯å€§ããªæ¹åã§ãã
ç§ã¯å人çãªçç±ã§ POSIX ã·ã§ã«ãšäºææ§ã®ããã·ã§ã«ã«æ³šåããŠããŸãããPOSIX ã·ã§ã«ä»¥å€ãåŠå®ããŠããããã§ã¯ãããŸãããæéçãªçç±ã§äœ¿ã£ãŠããŸããããäžè¬çã«æ°ããã·ã§ã«ã®æ¹ãåªããŠããã ãããšæããŸãããUNIX ãã·ã§ã«ãã«ãŒãã«ããåé¢ããã®ã¯ãã·ã§ã«ã誰ã§ãèªç±ã«éçºããããšãå¯èœã«ãããããªããã§ããã®ãããªæ°ããã·ã§ã«ãäœã£ãŠããããšããã UNIX éçºè ã®èãã§ããããšæããŸãã
ã·ã§ã«ã¯èª°ã§ãèªåã®å¥œããªã·ã§ã«ã«å€æŽããŠããã䜿ãããšãåºæ¥ãŸããããã§ç¥ã£ãŠãããŠæ¬²ããããšã¯ãã·ã§ã«ãå€ãããããšèšã£ãŠã·ã§ã«ã¹ã¯ãªãããŸã§å€ããå¿
èŠã¯ãªããšããããšã§ããäŸãã° macOS ã§ã¯ 2019幎10æã® 10.15 (Catalina) ããããã©ã«ãã®ãŠãŒã¶ãŒã·ã§ã«ã zsh ã«å€ãããŸããããã·ã§ã«ã¹ã¯ãªããã zsh ã§æžããªããã°ãªããªããªã£ããšåéãããŠããªãã§ããããïŒã¿ãŒããã«ãã€ãŸãé»ãç»é¢ã§äœ¿ããŠãŒã¶ãŒã·ã§ã«ãšãã·ã§ã«ã¹ã¯ãªãããåããã·ã§ã«ã¯å¥ç©ã§ãããŠãŒã¶ãŒã·ã§ã«ã¯ãŠãŒã¶ãŒã䜿çšãããšèšå®ããã·ã§ã«ã§ãããã·ã§ã«ã¹ã¯ãªãããåããã·ã§ã«ã¯ã·ã§ã«ã¹ã¯ãªããã®äžè¡ç®ã®ã·ãã³ ïŒ#!) ã§æå®ããã·ã§ã«ã§ããææ°ãå«ã macOS ã® /bin/sh ã¯ä»ã§ãå€ã bash (3.2.57) ã§ããã·ã§ã«ã¯å€ãã£ãŠããŸãããäºææ§ãç¶æããå¿
èŠãããã®ã§å€ããŠããªãã®ã§ãããã
æ°ãã bash ã䜿ãããã®ã§ããã°ãHomebrew ãªã©ã§ææ°ã® bash ãã€ã³ã¹ããŒã«ããã°ãããããŠãŒã¶ãŒã·ã§ã«ãšããŠã§ãã·ã§ã«ã¹ã¯ãªãããåããã·ã§ã«ãšããŠã§ã䜿ãããšãåºæ¥ãŸãããbash ãã€ã³ã¹ããŒã«ãããšããŠã zsh ããã®ä»ã®ã·ã§ã«ã䜿ãããšãåºæ¥ãŸãããã¡ããã¿ãŒããã«ã§å ¥åããã·ã§ã«ãšã·ã§ã«ã¹ã¯ãªããã®ã·ã§ã«ãç°ãªãã°äºã€ã®ææ³ãèŠããå¿ èŠããããŸãããã·ã§ã«ã¹ã¯ãªããã§äœ¿ãã·ã§ã«ãšã¿ãŒããã«ã§äœ¿ãã·ã§ã«ãåãã«ããªããã°ãããªããšããããã§ã¯ãããŸãããïŒäŸå€ãšã㊠bashrc ã zshrc ãšèšã£ãçŸåšã®ãŠãŒã¶ãŒã·ã§ã«ã«èªã¿èŸŒãã·ã§ã«ã¹ã¯ãªããã¯åãã·ã§ã«ã«ããå¿ èŠããããŸããïŒ
ã¿ãŒããã«ã§ã€ã³ã¿ã©ã¯ãã£ãã·ã§ã«ãšããŠäœ¿ãã ãã§ããã°ãã·ã§ã«ã¹ã¯ãªããçšã®é«åºŠãªææ³ã¯ããŸãå¿ èŠãšããªããšæããŸãã䜿ã£ãŠãªãç§ãèšãã®ããªãã§ãããLinux / Unix ã¯ã·ã§ã«ãå€ããããããã«èšèšãããŠããããã§ãããããªã·ã§ã«ã䜿ã£ãŠã¿ããšè¯ããšæããŸãã
POSIX ã®ä»æ§æ¹èšã«ã¯èª°ã§ãåå ã§ãã
å€ãã®æ°ããã·ã§ã«ãèªçãããŠãŒã¶ãŒã¯èªç±ã«ã·ã§ã«ãéžã¶ããšãåºæ¥ãŸãããããã§ã POSIX ã·ã§ã«ã®ç«å Žãå€ããããšã¯é£ããã§ãããããªããªã OS ã®äžéšãšããŠæå®ãããŠããŸã£ãŠããããã§ããPOSIX ã§ OS ã®äžéšãšããŠæå®ãããŠããŸã£ãéšåã¯å€åãã¥ãããªããŸãã1990 å¹Žä»£åœæã®ç¶æ³ãèžãŸãããš POSIX ã®æ¹éã¯ååçè§£ã§ãããã®ã§ããããã€ãŸã§ãã·ã§ã«ãäžäŸ¿ãªãŸãŸã«ããŠããããšã¯ã§ããŸããã
POSIX ã¯ãç§»æ€æ§ããããOS ã®ã€ã³ã¿ãŒãã§ãŒã¹ã®ã¿ãæšæºåããŠããŸãããã®ããæ°ããã·ã§ã«ãç»å ŽãããšããŠããããããããã OS ã«å°å ¥ãããªãéããç§»æ€æ§ã¯ãªãã®ã§æšæºåãããããšã¯ãããŸãããã©ã® OS ãäºææ§ãéèŠããŠããã®ã§ãŠãŒã¶ãŒã·ã§ã«ãªãããããããã·ã¹ãã ã·ã§ã«ã眮ãæãããããªããšã¯ãªããªãããªãã§ããããOS ã POSIX ã«æºæ ããããšããŠããéããPOSIX ã·ã§ã«ãä»ã®å€§ããæ¹åãããã·ã§ã«ã«çœ®ãæããããšã¯ãªãã®ã§ãã
ã·ã§ã«ã¹ã¯ãªããã䜿ãã®ããããŠãä»ã®äžè¬çãªããã°ã©ãã³ã°èšèªã䜿ãã°è¯ãã®ã§ã¯ïŒãšæããããããŸããããæšæºåºåã«åºåãããããã¹ããæ±ããã³ãã³ããçµã¿åãããããã®èšèªã§ããã·ã§ã«ã¹ã¯ãªãããä»ã®äžè¬çãªèšèªã«çœ®ãæããããšã¯åºæ¥ãŸãããPerl ã Python 㯠awk ã®ä»£æ¿ã§ãã£ãŠã·ã§ã«ã¹ã¯ãªããã®ä»£æ¿ã§ã¯ãªãã®ã§ããäºå®ãšããŠã·ã§ã«ã¹ã¯ãªããã¯ãã£ãšäœ¿ããç¶ããŠããŸãããïŒ ããã«ã·ã§ã«ã¹ã¯ãªãããä»ã®èšèªã«çœ®ãæãããšåé·ã«ãªãã¯ãã§ããããã¯ä»ã®èšèªãé©ããèšèªã§ã¯ãªãäœããã®èšŒæ ã§ããã·ã§ã«ã«ã¯ CLI ãŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ãšããŠã®åœ¹ç®ããããŸããããããäžè¶³ããŠããä»ã®äžè¬çãªèšèªã«çœ®ãæããããšã¯äžå¯èœã§ãã
ã·ã¹ãã ã·ã§ã«ãå€ããããªããä»ã®èšèªã«çœ®ãæããããšãåºæ¥ãªãããšãªãã°ãPOSIX ã·ã§ã«ãå°ããã€æ¹åããŠãããããããŸãããä»ã¯æ¡åŒµæ©èœã§ãã£ãŠãããããå€ãã® POSIX ã·ã§ã«ã§å®è£ ãããã°ç§»æ€æ§ããããã®ãšããŠæšæºåãããŸãããããããããšã« POSIX ã®ä»æ§æ¹èšã«ã¯èª°ã§ãç¡æã§åå ã§ããŸããAustin Group ã®ã¡ã³ããŒã«ç»é²ããã ãã§ãã誰ã§ã仿§æ¹èšã®ææ¡ãã§ããŸãããåœç¶ãã㯠POSIX ã®æåã«æ²¿ã£ããã®ã§ãªããã°ãªããŸãããåºæ¬çã«ã©ã®å®è£ ã«ãååšããŠããªãæ°æ©èœãåãå ¥ããããããšã¯ãŸããããŸãããã©ããªã«çŽ æŽãããæ©èœã§ãã£ããšããŠã POSIX ã®æ¡æã®åºæºã¯ããã§ã«ç§»æ€æ§ããããã©ãããã§ããããæ°æ©èœãæšæºåããããã®ã§ããã°ããŸãå ã«æ¢åã®ã·ã§ã«ãã³ãã³ããªã©ããã§ã«ããå®è£ ã«æ©èœè¿œå ãããšããããå§ããªããã°ãªããŸãããæäœã§ãäžã€ãããããäžã€ã§ã¯é£ããã§ããããäºã€ä»¥äžã®å®è£ ã§ç§»æ€æ§ãå®çŸãããŠããå¿ èŠããããŸããå®è£ ãå€ããã°å€ãã»ã©è¯ãã§ãããã·ã§ã«ã§ããã° bash ãš kshãã³ãã³ãã§ããã° GNU ãš BSD ã§ããã§ã«ç§»æ€æ§ããããã®ã§ãªããã°æšæºåããã®ã¯é£ãããšæããŸããå®å šã«åãåäœãããŠããå¿ èŠã¯ãããŸãããåäœãç°ãªãéšåã¯ãPOSIX ã§ã¯åäœãæå®ããªãããšããŠå®è£ è ã«ä»»ããã°è¯ãããã§ããéèŠãªã®ã¯ POSIX ãšããŠæšæºåãããšèšããæç« ãäœãããã©ããã§ããææ¡ã®éã«ã¯æ¹èšæ¡ã®ææžãäœæããããšãæšå¥šãããŠããŸãããããå ã«è°è«ãå§ãŸããŸãã
ãã°ãã POSIX ã®ã¡ãŒãªã³ã°ãªã¹ãã Issue Tracker ãçºããŠãã©ã®ãããªæ¹éãªã®ãã¯ãªããšãªãããã£ããããªæ°ãããã®ã§ãä»åŸã¯ç§ã POSIX ïŒäž»ã«ã·ã§ã«ã¹ã¯ãªããé¢é£ïŒã®ä»æ§æ¹èšã«åå ã§ããã°ãªãŒãšèããŠããŸããè±èªã§èŠæ Œæžãæžãã®ã¯å€§å€ã§ããããã§ã«ããå®è£ ããæšæºåãããªããšããããšã¯ããã§ã«ã©ããã®å®è£ ã®ããã¥ã¡ã³ããããããã§ãããç䌌ããŠæçŽãããã°ãªããšããªãã§ãããããããã bash 3 ãããã®æ©èœã§ããã° macOS ã§ããã§ã«åãããã§ååæšæºåã¯å¯èœã ãšæã£ãŠããŸããå¯èœãªãã°é åã䜿ããããã«ãªã£ãŠæ¬²ããã§ãããåèªåå²ã«é Œããã«è€æ°ã®åèªãäžã€ã®å€æ°ã«å ¥ããã«ã¯é åã¯å¿ é ã§ããé åã®è©±ã¯ POSIX ã§ãå°ãåã«è©±é¡ã«ãªããŸãããåŠå®çãªæèŠã¯ãªããããªæ°ã¯ããŠããŸãïŒåèïŒãä»ã®èšèªãšåãããã« POSIX ã·ã§ã«ãæ¹èšãããŠå€ããããããŠããŠçãªç©ããªããªã£ãŠãããšè¯ãã§ããã
ãããã«
ã·ã§ã«ã¯ããŸãå€åããªããšæãããã¡ã§ããããããªäºã¯ãããŸãããæ¹èšã«æéããããã®ã¯æšæºåããããã®ã®å®¿åœã ãšæããŸãããPOSIX ã¯æ¡åŒµæ©èœã劚ããªãããã«æšæºåãããŠãããããbash ã zsh ã¯æ©èœè¿œå ãç¶ããããšãã§ããŠããŸãã
æ¬ç·šäžã«ãæžããŸããããã·ã§ã«ããã³ã·ã§ã«ã¹ã¯ãªãããä»ã®äžè¬çãªèšèªã«çœ®ãæããããšã¯ãããŸãããå€ãã®åªããã¹ã¯ãªããèšèªãèªçããä»ãæã®ããã«ã·ã§ã«ã¹ã¯ãªãããã awk ãåŒã³åºããŠäºååŠçãããå¿ èŠã¯ãªããšæããŸãããã·ã§ã«ã¹ã¯ãªããã¯å€ãã®ã³ãã³ããçµã¿åãããã®ã«ã¯ä»ãé©ããŠããèšèªã§ãã
ã·ã§ã«ã¹ã¯ãªããã«ãšã£ãŠïŒPOSIX ã³ãã³ãã«éããïŒå€ãã®ã³ãã³ãã¯ãã©ã€ãã©ãªã§ãã䟿å©ãªéå ·ã§ããããã°ã©ãã§ããã°ãã®éå ·ã䜿ãããªããããã«ãªãã¹ãã§ããããCLI ã€ã³ã¿ãŒãã§ãŒã¹ãšããŠã·ã§ã«ããæäœæ¥ã§ã³ãã³ããå®è¡ããã®ãè¯ãã§ãããã·ã§ã«ã¹ã¯ãªãããæžããŠã³ãã³ããã€ãªããŠäžé£ã®äœæ¥ãææ©ãèªååããããšãéèŠã§ããã·ã§ã«ã¹ã¯ãªããã䜿ããªããªã©ãšããããªãã®æå³ããªãèªåãäžå¹žã«ãªãã ãã®ç®æšãªããç«ãŠãŠãªãã§ãã·ã§ã«ã¹ã¯ãªãããæžããããããæ¹ãçç£çãšãããã®ã§ãããã®ããã«ã¯ã·ã§ã«èªäœãæ¹åããã·ã§ã«ã¹ã¯ãªããçšã©ã€ãã©ãªã®éçºããå¶éãå€ãç§»æ€æ§ãäœãå€ã UNIX ã³ãã³ãïŒPOSIX ã³ãã³ãïŒã«äŸåããªãã§æžãããã«ã代æ¿ã³ãã³ãã®éçºãéèŠã ãšç§ã¯èããŠããŸãã
æ¬ç·šã§ã¯ææå°æ©ãšèã玹ä»ããŸããã§ããããbash ããæ°ããèšèªãžãšç§»è¡ãããããšãç®æšã® Oil ãããžã§ã¯ããã©ã€ã»ã³ã¹äžã®çç±ãã BusyBox ã®ä»£æ¿ãç®æããŠãã toybox ãšãã®ã·ã§ã«ã§ãã toysh ïŒbash çžåœã®æ©èœã®å®è£ ãç®æšïŒãååã«ã·ã§ã«ãšã€ããŠããããã« CLI ãæªå®è£ 㪠NGS (Next Generation Shell) ãªã©è峿·±ãã·ã§ã«ããããŸããOil (æ£ç¢ºã«ã¯ oshïŒãBusybox ashãtoysh ã¯æããã« bash ãšã®äºææ§ãç®æããŠããŸãããããã㯠POSIX ã·ã§ã«ã bash 3 ãããã«ã¯åŒ·åãããã®ã§ã¯ãªãããšæããŸãã
ã·ã§ã«ã®æªæ¥ã¯ããªã«ã POSIX ã§æšæºåãããŠããšããããŠãªããšããããã¯ã·ã§ã«ãã³ãã³ãã®æ¹èšã ãã䜿ã£ãŠã¯ãããªããšãããããããã ããªã話ããè±åŽããã·ã§ã«ãã³ãã³ãã®äºææ§ãæèãããšãæ®éã«æžãã°ãã¹ãŠã®ç°å¢ã§æ®éã«åãããã«ãªãããšãé¡ã£ãŠããŸãã
