อ่าน 7 นาที
คอร์นเชลล์
KornShell ( ksh ) เป็น เชลล์ Unix ที่พัฒนาโดย David Korn ที่ Bell Labs ในช่วงต้นทศวรรษ 1980 และประกาศในงาน USENIX เมื่อวันที่ 14 กรกฎาคม 1983 [ 1 ] [ 2 ]...
คอร์นเชลล์
| คอร์นเชลล์ | |
|---|---|
การโต้ตอบกับเชลล์เริ่มต้นของOpenBSD คือ pdksh | |
| ผู้เขียนต้นฉบับ | เดวิด คอร์น |
| ปล่อย | พ.ศ. 2526 [ 1 ] [ 2 ] |
| เวอร์ชันสุดท้าย | 93u+ / 1 สิงหาคม 2555 |
| รุ่นทดลองใช้งาน | 93v- / 24 ธันวาคม 2014 |
| เขียนเป็น | ซี |
| ระบบปฏิบัติการ | Unixและระบบปฏิบัติการที่คล้าย Unix (เช่นLinuxและmacOS ; ใช้งานได้ในWindows 10 ด้วย [ 3 ] ) |
| มีจำหน่ายใน | ภาษาอังกฤษ |
| พิมพ์ | เชลล์ยูนิกซ์ |
| ใบอนุญาต |
|
| เว็บไซต์ | คอร์นเชลล์ |
| ที่เก็บข้อมูล | github.com/att/ast |
| ksh2020 | |
|---|---|
| นักพัฒนา | Kurtis Rader, Siteshwar Vashisht, ชุมชน |
| เวอร์ชันสุดท้าย | 10 ตุลาคม 2019 (พ.ศ. 2563) |
| ผู้มาก่อน | 93v- |
| ใบอนุญาต | ใบอนุญาตสาธารณะของ Eclipse |
| เว็บไซต์ | คอร์นเชลล์ |
| ที่เก็บข้อมูล | github.com/ksh2020/ksh |
| ksh93u+m | |
|---|---|
| นักพัฒนา | มาร์ติน เด็คเกอร์, โจโนธาน คิง, ไฮอีเนียส |
| เวอร์ชันเสถียร | 1.0.10 / 2 สิงหาคม 2567 |
| ผู้มาก่อน | 93u+ |
| ใบอนุญาต | ใบอนุญาตสาธารณะของ Eclipse |
| เว็บไซต์ | github.com/ksh93/ksh/wiki |
| ที่เก็บข้อมูล | github.com/ksh93/ksh |
KornShell ( ksh) เป็นเชลล์ Unixที่พัฒนาโดยDavid Kornที่Bell Labsในช่วงต้นทศวรรษ 1980 และประกาศในงานUSENIXเมื่อวันที่ 14 กรกฎาคม 1983 [ 1 ] [ 2 ] การพัฒนาเริ่มต้นขึ้นโดยอิงจากซอร์สโค้ดของ Bourne shell [ 7 ] ผู้มีส่วนร่วมในช่วงแรกอื่นๆ ได้แก่ นักพัฒนาของ Bell Labs อย่าง Mike Veach และ Pat Sullivan ซึ่งเขียนโค้ดโหมดการแก้ไขบรรทัดแบบEmacsและvi ตามลำดับ [ 8 ] KornShell สามารถใช้งานร่วมกับ Bourne shell ได้ และมีคุณสมบัติหลายอย่างของC shellซึ่งได้รับแรงบันดาลใจจากคำขอของผู้ใช้ Bell Labs
คุณสมบัติ
KornShell เป็นไปตามมาตรฐานPOSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992) ความแตกต่างที่สำคัญระหว่าง KornShell กับ Bourne shell แบบดั้งเดิม ได้แก่:
- การควบคุมงานการตั้งชื่อแทนคำสั่งและประวัติคำสั่งได้รับการออกแบบตาม คุณสมบัติ ของเชลล์ C ที่เกี่ยวข้อง การควบคุมงานถูกเพิ่มเข้าไปใน Bourne Shell ในปี 1989 [ 9 ]
- มีรูปแบบการแก้ไขบรรทัดคำสั่งให้เลือก 3 แบบ โดยอิงจากvi , EmacsและGosling Emacs
- อาร์เรย์แบบเชื่อมโยง และการดำเนินการ ทางคณิตศาสตร์แบบจุดลอยตัวในตัว(มีเฉพาะในKornShell เวอร์ชันksh93 เท่านั้น)
- การค้นหาแบบไดนามิกสำหรับฟังก์ชัน
- ฟังก์ชันทางคณิตศาสตร์
- การทดแทนกระบวนการและการเปลี่ยนทิศทางกระบวนการ
- นิพจน์ที่คล้ายกับภาษาซี
- ลูปforและwhileที่เน้นการแสดงออกที่ได้รับการปรับปรุง
- ความสามารถในการขยายเพิ่มเติมแบบไดนามิกของคำสั่งในตัว (ที่โหลดแบบไดนามิก) (ตั้งแต่ksh93 )
- ตัวแปรอ้างอิง
- ตัวแปรที่ซ้อนกันตามลำดับชั้น
- ตัวแปรสามารถมีฟังก์ชันสมาชิกที่เชื่อมโยงกับตัวแปรนั้นได้
- การเขียนโปรแกรมเชิงวัตถุ (ตั้งแต่ksh93t )
- ตัวแปรสามารถเป็นอ็อบเจ็กต์ที่มีสมาชิก (ตัวแปรย่อย) และเมธอดสมาชิกได้
- การเรียกเมธอดของอ็อบเจ็กต์ทำได้โดยใช้ชื่อตัวแปรของอ็อบเจ็กต์ ตามด้วยชื่อเมธอด (หลังเครื่องหมายจุด)
- เมธอดพิเศษของอ็อบเจ็กต์จะถูกเรียกใช้ในกรณี: การเริ่มต้นหรือการกำหนดค่าให้กับอ็อบเจ็กต์, การยกเลิกการใช้งานอ็อบเจ็กต์ ( unset )
- สามารถใช้งานการประกอบและการรวมกลุ่มได้ รวมถึงรูปแบบการสืบทอดด้วย
ประวัติศาสตร์
KornShell ถูกเผยแพร่ครั้งแรกในฐานะส่วนหนึ่งของชุดเครื่องมือทดลองของ AT&Tในปี 1986 และต่อมาได้ถูกรวมอยู่ในUNIX System V Release 4 ในปี 1989

KornShell เดิมทีเป็นซอฟต์แวร์กรรมสิทธิ์ในปี 2000 ซอร์สโค้ดถูกเผยแพร่ภายใต้ใบอนุญาตเฉพาะของ AT&T แต่ตั้งแต่ การเผยแพร่ ksh93qในช่วงต้นปี 2005 เป็นต้นมา ได้มีการเผยแพร่ภายใต้ใบอนุญาตสาธารณะของ Eclipse [ 4 ] KornShellมีให้ใช้งานเป็นส่วนหนึ่งของชุดซอฟต์แวร์โอเพนซอร์ส AT&T Software Technology (AST) เนื่องจาก KornShell เดิมทีมีให้ใช้งานผ่านใบอนุญาตกรรมสิทธิ์จาก AT&T เท่านั้น จึงมีการสร้างทางเลือกโอเพนซอร์สและฟรีขึ้นมาหลายตัว ซึ่งรวมถึงpdksh , mksh , BashและZ shell
ฟังก์ชันการทำงานของ KornShell ดั้งเดิมksh88ถูกนำมาใช้เป็นพื้นฐานสำหรับมาตรฐานPOSIX.2 Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992)
ผู้จำหน่ายบางรายยังคงจัดส่งเวอร์ชัน ksh88 รุ่น เก่าของตนเอง ซึ่งบางครั้ง อาจมีส่วนขยายเพิ่มเติมksh93ได้รับการดูแลรักษาบนGitHub [ 10 ]
ksh93ถูกแจกจ่ายเป็นส่วนหนึ่งของสภาพแวดล้อมเดสก์ท็อปทั่วไป (Common Desktop Environment )ในชื่อ "Desktop KornShell" ( dtksh ) [ 11 ]เวอร์ชันนี้ยังมีการแมปในระดับเชลล์สำหรับ วิดเจ็ต Motif ด้วย โดยมีจุดประสงค์เพื่อเป็นคู่แข่งกับTcl / Tk [ 12 ]
KornShell ดั้งเดิมksh88กลายเป็นเชลล์เริ่มต้นบนAIXในเวอร์ชัน 4 [ 13 ] [ 14 ]โดยมี ksh93 ให้ใช้งานแยกต่างหาก[ 15 ]
UnixWare 7 ประกอบด้วยทั้งksh88และksh93เชลล์ Korn เริ่มต้นคือksh93ซึ่งมีให้ใช้งานในรูปแบบ/usr/bin/kshและเวอร์ชันเก่ากว่ามีให้ใช้งานในรูปแบบ/usr/bin/ksh88 [ 16 ] UnixWareยังรวมถึงdtkshเมื่อติดตั้ง CDE ด้วย
การ แจกจ่าย ksh93ประสบชะตากรรมที่ไม่เสถียรมากขึ้นหลังจากผู้เขียนออกจาก AT&T ประมาณปี 2012 ในเวอร์ชันเสถียรksh93u+ผู้เขียนหลักยังคงทำงานใน สาขาเบต้า ksh93v-จนถึงประมาณปี 2014 งานนั้นถูกรับช่วงต่อโดย Red Hat เป็นหลักในปี 2017 (เนื่องจากคำขอของลูกค้า) และส่งผลให้มีการเปิดตัวksh2020 [ 17 ] ครั้งแรกในฤดู ใบไม้ร่วงปี 2019 การเปิดตัวครั้งแรกนั้น (แม้ว่าจะแก้ไขปัญหาความเสถียรก่อนหน้านี้หลายประการ) ก็ยังก่อให้เกิดปัญหาการแตกหักและความเข้ากันได้[ 18 ]ในเดือนมีนาคม 2020 AT&T ตัดสินใจที่จะย้อนกลับการเปลี่ยนแปลงของชุมชน เก็บไว้ในสาขา และเริ่มต้นใหม่จากksh93u+เนื่องจากมีการเปลี่ยนแปลงที่กว้างเกินไปและเน้น ksh มากเกินไปสำหรับบริษัทที่จะรับเข้าโครงการในโหมดการบำรุงรักษา[ 19 ] [ 20 ] ksh2020 [ 21 ]ได้รับการเผยแพร่เป็น "การเผยแพร่ครั้งสำคัญด้วยเหตุผลหลายประการ" [ 22 ]เช่น การลบ การสนับสนุน EBCDICการยกเลิกการสนับสนุนปลั๊กอินไบนารีที่เขียนขึ้นสำหรับksh93u+และการลบฟังก์ชันทางคณิตศาสตร์ที่เสียหายบางส่วน แต่ไม่เคยได้รับการบำรุงรักษาหรือสนับสนุนโดย AT&T (แม้แต่ในวันที่เผยแพร่ครั้งแรก) ซอร์สโค้ดของksh2020ไม่ได้รับการคอมมิตใดๆ ตั้งแต่เดือนกุมภาพันธ์ 2020 และถูกเก็บถาวรแบบอ่านอย่างเดียวในเดือนตุลาคม 2021 [ 17 ]
หลังจากปัญหาที่เกิดขึ้นกับ สาขา ksh2020และการละทิ้งสาขาดังกล่าว ได้มีการสร้างที่เก็บข้อมูลใหม่ในเดือนพฤษภาคม 2020 สำหรับ สาขา ksh93u+mโดยอิงจากรุ่น AT&T ที่เสถียรล่าสุด ( ksh93u+ 2012-08-01) ซึ่งการพัฒนาแก้ไขข้อบกพร่องยังคงดำเนินต่อไปอย่างต่อเนื่อง[ 23 ]
ผลงานหลักที่มีส่วนร่วมในสาขาซอฟต์แวร์หลัก
สำหรับรายละเอียดในรายการด้านล่างนี้ สาขาหลักของซอฟต์แวร์ KSH หมายถึงโปรแกรมดั้งเดิมที่พัฒนามาตั้งแต่เดือนกรกฎาคม พ.ศ. 2526 จนถึงKSH2020 ที่วางจำหน่าย ในช่วงปลายปี พ.ศ. 2562 การพัฒนาต่อยอดในเวอร์ชัน (สาขา) อื่นๆ ของ KSH ได้แยกออกเป็นกลุ่มต่างๆ ตั้งแต่ปี พ.ศ. 2563 และจะไม่กล่าวถึงรายละเอียดในส่วนต่อไปนี้
ผู้มีส่วนร่วมหลักรายบุคคล
รายชื่อต่อไปนี้เรียงลำดับตามผลงานที่สำคัญที่สุดโดยประมาณจากน้อยไปมาก:
- เดวิด จี. คอร์น (เอทีแอนด์ที เบลล์ แล็บโบราทอรีส์, เอทีแอนด์ที แล็บโบราทอรีส์ และกูเกิล; และผู้สร้าง)
- เกล็น เอส. ฟาวเลอร์ (AT&T Bell Laboratories, AT&T Laboratories)
- Kiem-Phong Vo (AT&T Bell Laboratories, AT&T Laboratories)
- อดัม เอ็ดการ์ (เอทีแอนด์ที เบลล์ แล็บโบราทอรีส์)
- ไมเคิล ที. วีช (เอทีแอนด์ที เบลล์ แล็บโบราทอรีส์)
- แพทริค ดี. ซัลลิแวน (เอทีแอนด์ที เบลล์ แล็บโบราทอรีส์)
- Matthijs N. Melchior (AT&T Network Systems International)
- Karsten-Fleischer (วิศวกรรมซอฟต์แวร์ Omnium)
- บอยเออร์-มัวร์
- ไซเตศวร วาชิษฐ์ (หมวกแดง)
- เคอร์ติส เรเดอร์
ที่ปรึกษาด้านการบูรณาการ
- โรลันด์ ไมนซ์
ผู้สนับสนุนหลักจากภาคธุรกิจ
รายชื่อต่อไปนี้เรียงลำดับตามผลงานที่สำคัญที่สุดโดยประมาณจากน้อยไปมาก:
- เอทีแอนด์ที เบลล์ แล็บโบราทอรีส์
- บริษัท เอทีแอนด์ที เน็ตเวิร์ก ซิสเต็มส์ อินเตอร์เนชั่นแนล
- ห้องปฏิบัติการเอทีแอนด์ที (ปัจจุบันคือ เอทีแอนด์ที แล็บส์)
- วิศวกรรมซอฟต์แวร์ออมเนียม
- บริษัท ออราเคิล คอร์ปอเรชั่น
- หมวกแดง
ทรัพยากรขององค์กรที่บริจาค
นอกจากบริษัทหลักที่ให้การสนับสนุนอย่างมาก (ตามรายชื่อด้านบน) แล้ว ยังมีบริษัทอีกหลายแห่งที่บริจาคทรัพยากรโดยไม่คิดค่าใช้จ่ายเพื่อการพัฒนา KSH ซึ่งรายชื่อมีดังต่อไปนี้ (เรียงตามลำดับตัวอักษร):
ตัวแปร
มีการแยกสาขาและคัดลอก KornShell ออกมาหลายเวอร์ชัน:
- dtksh – เป็นเวอร์ชันที่แตกแขนงมาจากksh93และรวมอยู่ในCDE
- tksh – เป็นเวอร์ชันที่แตกแขนงมาจากksh93ซึ่งช่วยให้เข้าถึงชุดเครื่องมือวิดเจ็ตTkได้
- oksh – พอร์ตของ KornShell เวอร์ชัน OpenBSDซึ่งมีจุดประสงค์เพื่อให้พกพาได้สูงสุด[ 24 ]ข้ามระบบปฏิบัติการต่างๆ มันถูกใช้เป็นเชลล์เริ่มต้นในDeLi Linux 7.2
- loksh – พอร์ตLinux ของ KornShell เวอร์ชัน OpenBSDโดยมีการเปลี่ยนแปลงเพียงเล็กน้อย[ 25 ]
- mksh – การใช้งานภาษา KornShell ฟรี ซึ่งแยกมาจาก pdksh ของ OpenBSD เดิมทีพัฒนาขึ้นสำหรับMirOS BSDและได้รับอนุญาตภายใต้ เงื่อนไข ที่อนุญาต (แม้ว่าจะไม่ใช่สาธารณสมบัติ) โดยเฉพาะอย่างยิ่งMirOS Licence [ 6 ] นอกเหนือจากการใช้งานบน BSD แล้ว เวอร์ชันนี้ยังได้แทนที่pdkshบน Debian [ 26 ]และเป็นเชลล์เริ่มต้นบน Android [ 27 ]
- SKsh – ตัวแปร AmigaOSที่ให้คุณสมบัติเฉพาะของ Amiga หลายอย่าง เช่นความสามารถในการทำงานร่วมกันของ ARexx [ 28 ]ตามธรรมเนียมนี้MorphOSใช้pdkshใน SDK ของตน
- MKS Korn shell ของ MKS Inc. – การใช้งานภาษา KornShell ที่เป็นกรรมสิทธิ์จากMicrosoft Windows Services for UNIX (SFU) จนถึงเวอร์ชัน 2.0; ตามที่ David Korn กล่าว MKS Korn shell ไม่เข้ากันได้อย่างสมบูรณ์กับ KornShell ในปี 1998 [ 29 ] [ 30 ]ใน SFU เวอร์ชัน 3.0 Microsoftได้แทนที่ MKS Korn shell ด้วย shell ใหม่ที่สอดคล้องกับ POSIX.2 ซึ่งเป็นส่วนหนึ่งของInterix [ 31 ]
- KornShell รวมอยู่ในUWINซึ่งเป็นแพ็คเกจความเข้ากันได้ของ Unix โดย David Korn [ 32 ]
- /bin/sh ในแพ็คเกจ System V บน BSD ของ Doug Gwyn (US Army BRL) ประกอบด้วย /bin/shเวอร์ชัน SVR2 ของ Ron Natalie ซึ่งมีทั้งการควบคุมงานและการแก้ไขบรรทัดคำสั่ง นี่เป็นเวอร์ชันร่วมสมัยกับ kshดั้งเดิมในช่วงเวลาที่ AT&T ยังไม่สามารถเข้าถึงได้ ต่อมา/bin/sh นี้ ถูกจัดส่งมาพร้อมกับระบบที่พัฒนามาจาก CMU Mach ทั้งหมด[ 33 ]
ดูเพิ่มเติม
อ่านเพิ่มเติม
- Morris I. Bolsky; David G. Korn (1995). ภาษาคำสั่งและการเขียนโปรแกรม KornShell ใหม่ . Prentice Hall PTR. ISBN 978-0-13-182700-4.
- David G. Korn; Charles J. Northrup; Jeffery Korn (กรกฎาคม 1996). "KornShell ใหม่—ksh93" . Linux Journal (27).
{{cite journal}}: CS1 maint: บริการเก็บถาวรที่เลิกใช้แล้ว ( ลิงก์ )
ลิงก์ภายนอก
- หน้าคู่มือการใช้งาน ksh93บนWayback Machine (เก็บถาวรเมื่อวันที่ 5 มิถุนายน 2013)
- หน้าคู่มือการใช้งาน ksh88บนWayback Machine (เก็บถาวรเมื่อวันที่ 5 พฤศจิกายน 2015)
- Korn shell (pdksh) ที่เป็นสาธารณสมบัติ สามารถดูได้ที่Wayback Machine (เก็บถาวรเมื่อวันที่ 21 ตุลาคม 2016)
- MirBSD Korn Shell (mksh)
- – คู่มือคำสั่งทั่วไปของ MirOS BSD i386
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ คอร์นเชลล์
KornShell ( ksh ) เป็น เชลล์ Unix ที่พัฒนาโดย David Korn ที่ Bell Labs ในช่วงต้นทศวรรษ 1980 และประกาศในงาน USENIX เมื่อวันที่ 14 กรกฎาคม 1983 [ 1 ] [ 2 ]...
คุณสมบัติ
KornShell เป็นไปตามมาตรฐาน POSIX.2 , Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992) ความแตกต่างที่สำคัญระหว่าง KornShell กับ Bourne shell แบบดั้งเดิม ได้แก่:
ประวัติศาสตร์
KornShell ถูกเผยแพร่ครั้งแรกในฐานะส่วนหนึ่งของ ชุดเครื่องมือทดลองของ AT&T ในปี 1986 และต่อมาได้ถูกรวมอยู่ใน UNIX System V Release 4 ในปี 1989
ผลงานหลักที่มีส่วนร่วมในสาขาซอฟต์แวร์หลัก
สำหรับรายละเอียดในรายการด้านล่างนี้ สาขาหลักของซอฟต์แวร์ KSH หมายถึงโปรแกรมดั้งเดิมที่พัฒนามาตั้งแต่เดือนกรกฎาคม พ.ศ. 2526 จนถึง KSH2020 ที่วางจำหน่าย ในช่วงปลายปี พ.ศ. 2562 การพัฒนาต่อยอดในเวอร์ชัน (สาขา) อื่นๆ ของ KSH ได้แยกออกเป็นกลุ่มต่างๆ ตั้งแต่ปี พ.ศ.