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

อ่าน 5 นาที

เชลล์ยูนิกซ์

เชลล์ Unix คือ เชลล์ ที่ให้ ส่วนติดต่อผู้ใช้ แบบบรรทัดคำสั่ง สำหรับ ระบบปฏิบัติการ ที่คล้าย Unix เชลล์ Unix มี ภาษาคำสั่ง ที่สามารถใช้ได้ทั้ง แบบโต้ตอบ หรือสำหรับการเขียน...

เชลล์ยูนิกซ์

หน้าต่างเชลล์ tcsh และ sh บนเดสก์ท็อปMac OS X Leopard [ 1 ]

เชลล์Unixคือเชลล์ที่ให้ส่วนติดต่อผู้ใช้แบบบรรทัดคำสั่ง สำหรับระบบปฏิบัติการที่คล้าย Unixเชลล์ Unix มีภาษาคำสั่งที่สามารถใช้ได้ทั้งแบบโต้ตอบหรือสำหรับการเขียนสคริปต์เชลล์[ 2 ]โดยทั่วไปผู้ใช้จะทำงานภายในเชลล์ Unix ผ่านโปรแกรมจำลองเทอร์มินัลอย่างไรก็ตาม การเข้าถึงโดยตรงผ่านการเชื่อมต่อฮาร์ดแวร์แบบอนุกรมหรือSecure Shellเป็นเรื่องปกติสำหรับระบบเซิร์ฟเวอร์ แม้ว่าการใช้เชลล์ Unix จะเป็นที่นิยมในหมู่ผู้ใช้บางกลุ่ม แต่บางกลุ่มก็ชอบใช้เชลล์แบบกราฟิกในระบบหน้าต่างเช่น ระบบที่มีให้ในระบบปฏิบัติการ Linux บนเดสก์ท็อปหรือmacOSแทนที่จะใช้ส่วนติดต่อบรรทัดคำสั่ง (CLI)

ผู้ใช้อาจเข้าถึงเชลล์ Unix ได้หลายตัว โดยมีเชลล์หนึ่งที่ตั้งค่าให้ทำงานโดยค่าเริ่มต้นเมื่อผู้ใช้ล็อกอินแบบโต้ตอบ การเลือก ค่าเริ่มต้น มักจะถูกจัดเก็บไว้ในโปรไฟล์ของผู้ใช้ (ตัวอย่างเช่น ในไฟล์ passwdในเครื่องหรือในระบบการกำหนดค่าแบบกระจาย เช่นNISหรือLDAP ) ผู้ใช้สามารถใช้เชลล์อื่นๆที่ซ้อนอยู่ภายในเชลล์เริ่มต้นได้

เชลล์ Unix อาจมีคุณสมบัติมากมาย รวมถึง: การกำหนดและการแทนที่ตัวแปร การ แทนที่คำสั่งการใช้สัญลักษณ์ตัวแทนในชื่อไฟล์ การส่งข้อมูลแบบ สตรี มผ่านท่อโครงสร้างการควบคุมการไหล ( การทดสอบเงื่อนไขและการวนซ้ำ ) บริบทของไดเร็กทอรีการทำงานและเอกสาร here

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

กระสุนปืนใหญ่รุ่นแรกๆ

เชลล์ Unix ตัวแรกคือเชลล์ Thompsonหรือshซึ่งเขียนโดยKen Thompsonที่Bell Labsและแจกจ่ายพร้อมกับ Unix เวอร์ชัน 1 ถึง 6 ตั้งแต่ปี 1971 ถึง 1975 [ 3 ]แม้ว่าจะค่อนข้างพื้นฐานเมื่อเทียบกับมาตรฐานสมัยใหม่ แต่ก็ได้แนะนำคุณสมบัติพื้นฐานหลายอย่างที่พบได้ทั่วไปในเชลล์ Unix รุ่นหลังทั้งหมด รวมถึงการส่งข้อมูลผ่านท่อ โครงสร้างควบคุมแบบง่ายโดยใช้ifและgotoและ การจับคู่ GLOB ชื่อไฟล์ แม้ว่าจะไม่ได้ใช้งานในปัจจุบัน แต่ก็ยังคงมีอยู่ใน ระบบ UNIX โบราณ บาง ระบบ เช่นUnix เวอร์ชัน 6

มันถูกสร้างขึ้นตามแบบMultics shell ซึ่งพัฒนาขึ้นในปี 1965 โดยวิศวกรซอฟต์แวร์ชาวอเมริกันGlenda Schroeder Multics shell ของ Schroeder เองก็ถูกสร้างขึ้นตามแบบโปรแกรมRUNCOM ที่ Louis Pouzinแสดงให้ทีม Multics เห็น คำต่อท้าย "rc" ในไฟล์การกำหนดค่า Unix บางไฟล์ (เช่น ".bashrc" หรือ ".vimrc") เป็นส่วนที่เหลือจากบรรพบุรุษของ Unix shells ที่มาจาก RUNCOM [ 1 ] [ 4 ]

เชลล์PWBหรือเชลล์ Mashey ( sh ) เป็นเวอร์ชันที่เข้ากันได้กับเชลล์ Thompson ซึ่งได้รับการปรับปรุงโดยJohn Masheyและคนอื่นๆ และเผยแพร่พร้อมกับProgrammer's Workbench UNIXในช่วงปี 1975–1977 โดยมุ่งเน้นที่การทำให้การเขียนโปรแกรมเชลล์ใช้งานได้จริง โดยเฉพาะอย่างยิ่งในศูนย์คอมพิวเตอร์ขนาดใหญ่ที่มีผู้ใช้งานร่วมกัน มันเพิ่มตัวแปรเชลล์ (ซึ่งเป็นต้นกำเนิดของตัวแปรสภาพแวดล้อมรวมถึงกลไกเส้นทางการค้นหาที่พัฒนาไปเป็น $PATH) สคริปต์เชลล์ที่ผู้ใช้สามารถเรียกใช้งานได้ และการจัดการการขัดจังหวะ โครงสร้างควบคุมได้รับการขยายจาก if/goto ไปเป็น if/then/else/endif, switch/breaksw/endsw และ while/end/break/continue เมื่อการเขียนโปรแกรมเชลล์แพร่หลายมากขึ้น คำสั่งภายนอกเหล่านี้จึงถูกรวมเข้ากับเชลล์เองเพื่อเพิ่มประสิทธิภาพ

แต่เชลล์ Unix ยุคแรกที่มีการแพร่หลายและมีอิทธิพลมากที่สุดคือเชลล์ Bourneและเชลล์ Cเชลล์ทั้งสองนี้ถูกใช้เป็นฐานการเขียนโค้ดและแบบจำลองสำหรับเชลล์ที่พัฒนาต่อยอดและทำงานคล้ายกันจำนวนมากที่มีชุดคุณสมบัติเพิ่มเติม[ 5 ]

เปลือกบอร์น

เชลล์Bourneหรือshเป็นเชลล์ Unix ใหม่ที่สร้างโดยStephen Bourneที่ Bell Labs [ 6 ]เผยแพร่เป็นเชลล์สำหรับ UNIX เวอร์ชัน 7 ในปี 1979 โดยนำเสนอคุณสมบัติพื้นฐานอื่นๆ ที่ถือว่าเป็นเรื่องปกติสำหรับเชลล์ Unix รุ่นหลังๆ ทั้งหมด รวมถึงเอกสาร here , การแทนที่คำสั่ง , ตัวแปรทั่วไปมากขึ้นและโครงสร้างควบคุม ในตัวที่ครอบคลุมมากขึ้น ภาษา รวมถึงการใช้คำหลักแบบย้อนกลับเพื่อทำเครื่องหมายจุดสิ้นสุดของบล็อก ได้รับอิทธิพลจากALGOL 68 [ 7 ] ตาม ธรรมเนียมแล้ว ชื่อโปรแกรมเชลล์ Bourne คือshและเส้นทางในลำดับชั้นของระบบไฟล์ Unix คือ/bin/shแต่ก็มีโปรแกรมที่เข้ากันได้อีกหลายตัวที่มีการปรับปรุงและคุณสมบัติเพิ่มเติมต่างๆ บนหลายระบบ sh อาจเป็นลิงก์สัญลักษณ์หรือลิงก์แบบฮาร์ดลิงก์ไปยังทางเลือกเหล่านี้

  • Almquist shell (ash): เขียนขึ้นเพื่อใช้แทน Bourne Shell ภายใต้ลิขสิทธิ์ BSD มักใช้ในสภาพแวดล้อมที่มีทรัพยากรจำกัด sh ของFreeBSD , NetBSD (และระบบปฏิบัติการที่พัฒนาต่อยอดจากระบบเหล่านี้) นั้นใช้ ash เป็นพื้นฐาน โดยได้รับการปรับปรุงให้เป็นไปตามมาตรฐาน POSIX
    • Busybox : ชุดยูทิลิตี้ Unix สำหรับระบบขนาดเล็กและระบบฝังตัว ซึ่งประกอบด้วยเชลล์ 2 ตัว ได้แก่ ash ซึ่งเป็นเชลล์ที่พัฒนามาจาก Almquist และ hush ซึ่งเป็นการใช้งานเชลล์ Bourne อย่างอิสระ
    • เชลล์ Almquist ของ Debian (dash): ทางเลือกที่ทันสมัยแทน ash ในDebianและUbuntu
  • Bourne-Again shell (bash): เขียนขึ้นเป็นส่วนหนึ่งของโครงการ GNUเพื่อให้มีฟังก์ชันการทำงานที่ครอบคลุมมากกว่า Bourne Shell เชลล์นี้มักติดตั้งมาอยู่แล้วและเป็นเชลล์แบบโต้ตอบเริ่มต้นสำหรับผู้ใช้ใน ระบบ Linux ส่วนใหญ่ โดยมีทั้งโหมดโต้ตอบ (ใช้งานโดย GNU Readline) และโหมดสคริปต์
  • Korn shell (ksh): เวอร์ชันปรับปรุงของ Bourne shell ซึ่งเขียนโดยDavid Kornโดยอิงจากซอร์สโค้ดของ Bourne shell [ 8 ]ขณะทำงานที่Bell Labs
  • เชลล์ Korn ที่เป็นสาธารณสมบัติ (pdksh)
  • Z shell (zsh): เชลล์ที่ค่อนข้างทันสมัยซึ่งสามารถใช้งานร่วมกับbash ได้บางส่วน เป็นเชลล์เริ่มต้นในKali Linuxตั้งแต่เวอร์ชัน 2020.4 และmacOSตั้งแต่เวอร์ชัน10.15 Catalina

มาตรฐานPOSIXกำหนดให้เชลล์มาตรฐานเป็นส่วนย่อยที่เข้มงวดของเชลล์ Korn จากมุมมองของผู้ใช้ เชลล์ Bourne สามารถจดจำได้ทันทีเมื่อเปิดใช้งานด้วยอักขระพร้อมท์บรรทัดคำสั่งเริ่มต้นที่เป็นเอกลักษณ์ คือ เครื่องหมายดอลลาร์ ( $ )

ซีเชลล์

C shell , csh , ถูกสร้างขึ้นตามแบบภาษาการเขียนโปรแกรม Cรวมถึงโครงสร้างการควบคุมและไวยากรณ์การแสดงออก เขียนโดยBill Joyในฐานะนักศึกษาปริญญาโทที่มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์และเผยแพร่อย่างกว้างขวางพร้อมกับBSD Unix [ 9 ]

C shell ยังแนะนำคุณสมบัติมากมายสำหรับการทำงานแบบโต้ตอบ รวมถึงกลไกประวัติและการแก้ไข ชื่อ แทนสแต็กไดเร็กทอรีสัญกรณ์ทิลเด cdpath การควบคุมงานและการแฮชเส้นทางในหลายระบบ csh อาจเป็นลิงก์สัญลักษณ์หรือลิงก์แบบฮาร์ดไปยังTENEX C shell (tcsh) ซึ่ง เป็นเวอร์ชันที่ได้รับการปรับปรุงจากเวอร์ชันดั้งเดิมของ Joy แม้ว่าคุณสมบัติแบบโต้ตอบของ csh จะถูกคัดลอกไปยังเชลล์อื่นๆ ส่วนใหญ่ แต่โครงสร้างภาษาไม่ได้ถูกคัดลอกอย่างกว้างขวาง เชลล์เดียวที่คล้ายคลึงกันคือHamilton C shellซึ่งเขียนโดย Nicole Hamilton เผยแพร่ครั้งแรกบนOS/2ในปี 1988 และบนWindowsตั้งแต่ปี 1992 [ 10 ]

ไฟล์การกำหนดค่า

เชลล์จะอ่านไฟล์การกำหนดค่าในสถานการณ์ต่างๆ ไฟล์เหล่านี้มักจะมีคำสั่งสำหรับเชลล์และจะถูกเรียกใช้เมื่อโหลด โดยปกติจะใช้เพื่อตั้งค่าตัวแปรสำคัญที่ใช้ในการค้นหาไฟล์ปฏิบัติการ เช่น$PATHและอื่นๆ ที่ควบคุมพฤติกรรมและลักษณะของเชลล์ ตารางในส่วนนี้แสดงไฟล์การกำหนดค่าสำหรับเชลล์ยอดนิยม[ 11 ]

ไฟล์การกำหนดค่า kshcshtcshทุบตีzsh
/etc/.loginเข้าสู่ระบบ เข้าสู่ระบบ
/etc/csh.cshrcใช่ ใช่
/etc/csh.loginเข้าสู่ระบบ เข้าสู่ระบบ
~/.tcshrcใช่
~/.cshrcใช่ ใช่[]
/etc/ksh.kshrcอินท์
/etc/sh.shrcอินเตอร์[]
$ENV (โดยทั่วไปคือ ~/.kshrc ) [ 12 ]ภายใน[] []อินท์ อินเตอร์[ e ]
~/.เข้าสู่ระบบเข้าสู่ระบบ เข้าสู่ระบบ
~/.ออกจากระบบเข้าสู่ระบบ เข้าสู่ระบบ
/etc/profileเข้าสู่ระบบ เข้าสู่ระบบ เข้าสู่ระบบ เข้าสู่ระบบ[ f ]
~/.โปรไฟล์เข้าสู่ระบบ เข้าสู่ระบบ เข้าสู่ระบบ[ g ]เข้าสู่ระบบ[ f ]
~/.bash_profileเข้าสู่ระบบ[ g ]
~/.bash_loginเข้าสู่ระบบ[ g ]
~/.bash_logoutเข้าสู่ระบบ
~/.bashrcเข้าสู่ระบบ +n/
/etc/zshenvใช่
/etc/zprofileเข้าสู่ระบบ
/etc/zshrcอินท์
/etc/zloginเข้าสู่ระบบ
/etc/zlogoutเข้าสู่ระบบ
~/.zshenvใช่
~/.zprofileเข้าสู่ระบบ
~/.zshrcอินท์
~/.zloginเข้าสู่ระบบ
~/.zlogoutเข้าสู่ระบบ

คำอธิบาย:

  • ค่าว่างหมายความว่าเชลล์ไม่ได้อ่านไฟล์นั้นเลย
  • "yes" หมายความว่าไฟล์จะถูกอ่านโดยเชลล์เสมอเมื่อเริ่มต้นระบบ
  • "login" หมายถึงการอ่านไฟล์หากเชลล์นั้นเป็นเชลล์สำหรับการล็อกอิน
  • "n/login" หมายความว่าไฟล์จะถูกอ่านหากเชลล์ไม่ใช่เชลล์ล็อกอิน
  • "int." หมายถึงการอ่านไฟล์หากเชลล์อยู่ในโหมดโต้ตอบ
  1. ^เฉพาะในกรณีที่ไม่พบไฟล์ ~/.tcshrc เท่านั้น
  2. ^เฉพาะ Bourne Shell รุ่นใหม่กว่าเท่านั้น
  3. ^สามารถใช้งานได้บนระบบที่รองรับ "ตัวเลือกยูทิลิตี้การพกพาผู้ใช้" ค่าของตัวแปรต้องเป็น เส้นทาง สัมบูรณ์และจะถูกละเว้น "หากรหัสผู้ใช้จริงและรหัสผู้ใช้ที่มีผล หรือรหัสกลุ่มจริงและรหัสกลุ่มที่มีผล แตกต่างกัน" [ 13 ]
  4. ^ $ENVคือ $HOME/.shrcใน Bourne Shell เวอร์ชันใหม่กว่า
  5. ^พฤติกรรมเหมือนกับ shแต่เฉพาะเมื่อเรียกใช้เป็น sh (bash 2+) หรือตั้งแต่ bash 4.2 เป็นต้นไป ก็เรียกใช้ในโหมดความเข้ากันได้กับ POSIXอย่างชัดเจน (ด้วยตัวเลือก --posixหรือ -o posix ) [ 14 ]
  6. ^ a bเฉพาะในโหมดความเข้ากันได้กับ sh/ksh เท่านั้น (เมื่อเรียกใช้เป็น bash, sh, ksh)
  7. ^ a b cไฟล์ที่อ่านได้ไฟล์แรกตามลำดับของ~/.bash_profile , ~/.bash_loginและ~/.profileและเฉพาะ~/.profile เท่านั้น หากเรียกใช้ในฐานะshหรืออย่างน้อยใน Bash 4.2 หากเรียกใช้อย่างชัดเจนในโหมดความเข้ากันได้กับ POSIX (ด้วยตัวเลือก--posixหรือ-o posix )

เปลือกหอยอื่นๆ

รูปแบบต่างๆ ของแนวคิดเชลล์ Unix ที่ไม่ได้มาจากเชลล์ Bourne หรือเชลล์ C ได้แก่สิ่งต่อไปนี้: [ 15 ]

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Unix_shell&oldid=1358303609 "

สรุปเนื้อหา

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

ข้อมูลสำคัญเกี่ยวกับ เชลล์ยูนิกซ์

เชลล์ Unix คือ เชลล์ ที่ให้ ส่วนติดต่อผู้ใช้ แบบบรรทัดคำสั่ง สำหรับ ระบบปฏิบัติการ ที่คล้าย Unix เชลล์ Unix มี ภาษาคำสั่ง ที่สามารถใช้ได้ทั้ง แบบโต้ตอบ หรือสำหรับการเขียน...

กระสุนปืนใหญ่รุ่นแรกๆ

เชลล์ Unix ตัวแรกคือ เชลล์ Thompson หรือ sh ซึ่งเขียนโดย Ken Thompson ที่ Bell Labs และแจกจ่ายพร้อมกับ Unix เวอร์ชัน 1 ถึง 6 ตั้งแต่ปี 1971 ถึง 1975 [ 3 ] แม้ว่าจะค่อนข้างพื้นฐานเมื่อเทียบกับมาตรฐานสมัยใหม่...

เปลือกบอร์น

เชลล์ Bourne หรือ sh เป็นเชลล์ Unix ใหม่ที่สร้างโดย Stephen Bourne ที่ Bell Labs [ 6 ] เผยแพร่เป็นเชลล์สำหรับ UNIX เวอร์ชัน 7 ในปี 1979 โดยนำเสนอคุณสมบัติพื้นฐานอื่นๆ ที่ถือว่าเป็นเรื่องปกติสำหรับเชลล์ Unix รุ่นหลังๆ ทั้งหมด รวมถึง เอกสาร here ,...

ซีเชลล์

C shell , csh , ถูกสร้างขึ้นตามแบบ ภาษาการเขียนโปรแกรม C รวมถึงโครงสร้างการควบคุมและไวยากรณ์การแสดงออก เขียนโดย Bill Joy ในฐานะนักศึกษาปริญญาโทที่ มหาวิทยาลัยแคลิฟอร์เนีย เบิร์กลีย์ และเผยแพร่อย่างกว้างขวางพร้อมกับ BSD Unix [ 9 ]