กลับไปหน้าบทความ

อ่าน 3 นาที

เปลือกทอมป์สัน

Thompson shell เป็น Unix shellตัวแรก ที่เปิดตัวใน Unixเวอร์ชันแรกในปี 1971 และเขียนโดยKen Thompson มันเป็นเพียงตัวแปลคำสั่งแบบง่ายๆ ไม่ได้ออกแบบมาสำหรับการเขียนสคริปต์...

เปลือกทอมป์สัน

เปลือกทอมป์สัน
ผู้เขียนต้นฉบับเคน ทอมป์สัน
นักพัฒนาเอทีแอนด์ที เบลล์ แล็บโบราทอรีส์
ปล่อย3 พฤศจิกายน 2514 ( 3 พฤศจิกายน 1971 )
ระบบปฏิบัติการยูนิซและระบบปฏิบัติการที่คล้ายยูนิซ
พิมพ์เชลล์ยูนิกซ์

Thompson shell เป็น Unix shellตัวแรก ที่เปิดตัวใน Unixเวอร์ชันแรกในปี 1971 และเขียนโดยKen Thompson [ 1 ] มันเป็นเพียงตัวแปลคำสั่งแบบง่ายๆ ไม่ได้ออกแบบมาสำหรับการเขียนสคริปต์ แต่ถึงกระนั้นก็แนะนำคุณสมบัติใหม่ๆ หลายอย่างให้กับอินเทอร์เฟบรรทัดคำสั่ง และนำไปสู่การพัฒนา Unix shell รุ่นต่อๆ มา

ประวัติศาสตร์

ชื่อ "เชลล์" (shell) สำหรับตัวแปลคำสั่งแบบบรรทัดคำสั่งและแนวคิดในการทำให้เชลล์เป็นโปรแกรมของผู้ใช้ที่อยู่นอกเคอร์เนล ของระบบปฏิบัติการนั้น ถูกนำมาใช้ครั้งแรกใน Multics ซึ่งเป็นระบบ ปฏิบัติการรุ่นก่อนหน้าของUnix

คุณสมบัติเด่นอย่างหนึ่งของเชลล์ Thompson ในยุคแรกคือไวยากรณ์ที่กระชับสำหรับการเปลี่ยนเส้นทาง การรับ/ส่งข้อมูล ในระบบ Multics การเปลี่ยนเส้นทางการรับหรือส่งข้อมูลของคำสั่งต้องใช้คำสั่งแยกกันเพื่อเริ่มและหยุดการเปลี่ยนเส้นทาง แต่ในระบบ Unix นั้น สามารถเพิ่มอาร์กิวเมนต์ลงในบรรทัดคำสั่งได้ง่ายๆ โดยใช้สัญลักษณ์ < ตามด้วยชื่อไฟล์สำหรับการรับข้อมูล หรือสัญลักษณ์ > สำหรับการส่งออกข้อมูล และเชลล์จะเปลี่ยนเส้นทางการรับส่งข้อมูลตลอดระยะเวลาของคำสั่งนั้น ไวยากรณ์นี้มีอยู่แล้วตั้งแต่การเปิดตัว Unix เวอร์ชันแรกในปี 1971

ต่อมาได้มีการเพิ่มแนวคิดเรื่องท่อ (pipes ) เข้ามา ตามคำแนะนำของDouglas McIlroyไวยากรณ์การเปลี่ยนเส้นทางจึงได้รับการขยายเพื่อให้สามารถส่งเอาต์พุตของคำสั่งหนึ่งไปยังอินพุตของอีกคำสั่งหนึ่งได้ ไวยากรณ์ท่อแบบดั้งเดิม ตามที่อธิบายไว้ในคู่มือเวอร์ชัน 3 มีดังนี้:

คำสั่ง 1 >คำสั่ง 2> 

ไวยากรณ์นี้มีความกำกวมมากเกินไปและอาจทำให้สับสนกับการเปลี่ยนเส้นทางไปยังไฟล์ได้ง่าย เนื่องจากระบบไม่สามารถแยกแยะได้ว่า "command2" เป็นคำสั่งหรือไฟล์ ในเวอร์ชัน 4 ไวยากรณ์จึงเปลี่ยนไปใช้สัญลักษณ์ | และ ^ เพื่อแสดงถึงการส่งต่อข้อมูลแบบไปป์:

คำสั่ง 1 | คำสั่ง 2 

วิธีนี้ให้ผลลัพธ์เหมือนกับวิธีต่อไปนี้ทุกประการ:

คำสั่ง 1 ^ คำสั่ง 2 

สัญลักษณ์ > เปลี่ยนเป็น:

คำสั่ง 1 > ไฟล์ 1 

การทำเช่นนี้จะบันทึกผลลัพธ์ของคำสั่ง command1 ลงในไฟล์ file1

ไวยากรณ์ของเชลล์ Thompson สำหรับการเปลี่ยนเส้นทางด้วย < และ > และการส่งข้อมูลผ่านท่อด้วย | ได้รับการพิสูจน์แล้วว่ามีความทนทานและถูกนำไปใช้โดยเชลล์ Unix อื่นๆ ส่วนใหญ่ รวมถึงระบบปฏิบัติการอื่นๆ เช่นMS-DOSด้วย

ออกแบบ

การออกแบบเชลล์นั้นตั้งใจให้เรียบง่าย แม้แต่ คำสั่ง ifและgotoซึ่งจำเป็นสำหรับการควบคุมการไหลของโปรแกรม ก็ยังถูกนำไปใช้เป็นคำสั่งแยกต่างหาก[ 1 ]

เชลล์ไม่มีฟังก์ชันสำหรับการแสดงความคิดเห็นนอกจากคำสั่งในตัว:โปรแกรมเมอร์เพียงแค่เขียนข้อความหลังจากคำสั่งนี้ ซึ่งจะไม่สนใจพารามิเตอร์ทั้งหมดและดำเนินการสำเร็จ คำสั่งในตัวอื่นๆ ได้แก่chdir, exit, login, newgrp, , shiftและ[ 2 ]wait

คำ สั่ง if ผสานการใช้งานของ การทดสอบ Bourne shell สมัยใหม่และคำสั่ง if เข้าด้วยกัน คำสั่งนี้จะค้นหานิพจน์ก่อน (ซึ่งอาจคล้ายกับ การทดสอบสมัยใหม่หรือเกี่ยวข้องกับคำสั่งภายนอก) จากนั้นจึงถือว่าส่วนที่เหลือของบรรทัดคำสั่งเป็นคำสั่งที่จะดำเนินการหากเงื่อนไขเป็นจริง ไม่มีสาขาelse [ 3 ]

คำสั่ง gotoถูกนำไปใช้ในลักษณะที่น่าสนใจ เนื่องจากแยกออกจากเชลล์ เมื่อถูกขอให้กระโดดไปยัง "LABEL" มันจะค้นหาไฟล์คำสั่งปัจจุบันเพื่อหาบรรทัดที่ระบุว่า: LABEL(จำไว้ว่า:จะถูกละเลย) จากนั้นจึงออกจากโปรแกรม เมื่อเชลล์พยายามอ่านบรรทัดถัดไป ตัวอธิบายไฟล์ที่จัดตำแหน่งใหม่จะนำทางไปยังตำแหน่งที่มีป้ายกำกับ[ 4 ]

ไม่มีการเปลี่ยนเส้นทางตัวอธิบายไฟล์เพิ่มเติมอื่นใดนอกเหนือจากอินพุตและเอาต์พุตมาตรฐาน (0 และ 1) ในเชลล์ Thompson การเปลี่ยนเส้นทาง stderr (ตัวอธิบายไฟล์ 2) ยังต้องการตัวห่อโปรแกรมภายนอกอีกfd2ด้วย[ 5 ]

เชลล์รองรับการใช้ globbing [ 2 ]แต่ในความเป็นจริงแล้วจะใช้การเลื่อนไปยังglobคำสั่งที่แทนที่อาร์กิวเมนต์และเรียกใช้คำสั่งที่ร้องขอ[ 6 ]

Thompson shell มีพารามิเตอร์ตำแหน่ง แต่ไม่มีตัวแปรชื่อหรือการเข้าถึงตัวแปรสภาพแวดล้อม มันเข้าใจการสร้างคำสั่งพื้นหลังด้วย&คล้ายกับ Bourne shell มันมีการอ้างอิงและการหลีกเลี่ยงด้วยเครื่องหมายแบ็กสแลช แม้ว่าเครื่องหมายอัญประกาศเดี่ยวจะทำงานแตกต่างจาก Bourne shell ก็ตาม[ 2 ]

การลดลงและการทดแทน

เนื่องจากการออกแบบที่เรียบง่าย ส่งผลให้เมื่อมีการเปิดตัวUnix เวอร์ชัน 6 ใน ปี 1975 เป็นที่ชัดเจนว่าเชลล์ Thompson ไม่เพียงพอสำหรับงานเขียนโปรแกรมที่ซับซ้อนส่วนใหญ่

ในเวลานี้ นักพัฒนาการ แจกจ่าย UNIX ของ Programmer's Workbenchโดยเฉพาะอย่างยิ่งJohn Masheyได้เริ่มปรับเปลี่ยนเชลล์ Thompson เพื่อให้เหมาะสมกับการเขียนโปรแกรมมากขึ้น[ 1 ] ผลลัพธ์ที่ได้เรียกว่าเชลล์ PWBหรือเชลล์ Mashey ซึ่งรวมถึงกลไกการควบคุมการไหลขั้นสูงขึ้นและแนะนำตัวแปรเชลล์ แต่ยังคงมีข้อจำกัดเนื่องจากจำเป็นต้องเข้ากันได้กับเชลล์ Thompson

ในที่สุด Thompson shell ก็ถูกแทนที่ด้วย Bourne shellในUnix เวอร์ชัน 7และC shellใน2BSDซึ่งทั้งสองระบบเปิดตัวในปี 1979 เนื่องจากระบบ Unix และ ระบบ ที่คล้าย Unix ในปัจจุบันเกือบทั้งหมด สืบเชื้อสายมาจาก V7 และ 2BSD ดังนั้น Thompson shell จึงไม่ค่อยได้ใช้งานอีกต่อไป อย่างไรก็ตาม มันยังคงมีให้ใช้งานในรูปแบบ โอเพนซอร์ส ในส่วนหนึ่งของชุดซอร์สโค้ด Ancient Unix หลายชุด และได้รับการพอร์ตไปยัง Unix รุ่นใหม่ๆ ในฐานะตัวอย่างทางประวัติศาสตร์

ดูเพิ่มเติม

  • หน้าคู่มือการ ใช้งาน Thompson shell ใน Unix ฉบับที่ 1
  • วิวัฒนาการของระบบแบ่งเวลาใช้งาน Unix - อธิบายถึงการพัฒนาในช่วงแรกของเชลล์
  • ที่มาของกระสุนปืนใหญ่บอร์น - หน้าคู่มือสำหรับกระสุนปืนใหญ่ทอมป์สันฉบับที่ 3, 4 และ 6 และแหล่งข้อมูลอื่นๆ เกี่ยวกับกระสุนปืนใหญ่รุ่นแรกๆ
  • โครงการ Etsh (V6Sh) - เชลล์ Thompson และยูทิลิตี้ที่เกี่ยวข้องซึ่งถูกพอร์ตไปยังระบบ Unix สมัยใหม่ (รวมถึง "เวอร์ชันปรับปรุง" ที่เข้ากันได้กับเวอร์ชันก่อนหน้าพร้อมคุณสมบัติสมัยใหม่บางอย่าง)
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Thompson_shell&oldid=1321730114 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ เปลือกทอมป์สัน

Thompson shell เป็น Unix shellตัวแรก ที่เปิดตัวใน Unixเวอร์ชันแรกในปี 1971 และเขียนโดยKen Thompson มันเป็นเพียงตัวแปลคำสั่งแบบง่ายๆ ไม่ได้ออกแบบมาสำหรับการเขียนสคริปต์...

ประวัติศาสตร์

ชื่อ "เชลล์" (shell) สำหรับ ตัวแปลคำสั่งแบบบรรทัดคำสั่ง และแนวคิดในการทำให้เชลล์เป็นโปรแกรมของผู้ใช้ที่อยู่นอก เคอร์เนล ของระบบปฏิบัติการนั้น ถูกนำมาใช้ครั้งแรกใน Multics ซึ่งเป็นระบบ ปฏิบัติการรุ่นก่อนหน้าของUnix

ออกแบบ

การออกแบบเชลล์นั้นตั้งใจให้เรียบง่าย แม้แต่ คำสั่ง if และ goto ซึ่งจำเป็นสำหรับการควบคุมการไหลของโปรแกรม ก็ยังถูกนำไปใช้เป็นคำสั่งแยกต่างหาก [ 1 ]

การลดลงและการทดแทน

เนื่องจากการออกแบบที่เรียบง่าย ส่งผลให้เมื่อมีการเปิดตัว Unix เวอร์ชัน 6 ใน ปี 1975 เป็นที่ชัดเจนว่าเชลล์ Thompson ไม่เพียงพอสำหรับงานเขียนโปรแกรมที่ซับซ้อนส่วนใหญ่