จากความคิดเห็นของคุณดูเหมือนว่าคุณจะสับสนว่าเชลล์คืออะไร เคอร์เนลรับผิดชอบการจัดการระบบ เป็นส่วนที่โหลดและรันโปรแกรมเข้าถึงไฟล์จัดสรรหน่วยความจำ ฯลฯ แต่เคอร์เนลไม่มีส่วนต่อประสานผู้ใช้ คุณสามารถสื่อสารกับมันได้โดยใช้โปรแกรมอื่นเป็นสื่อกลาง
เชลล์เป็นโปรแกรมที่พิมพ์พรอมต์อ่านบรรทัดอินพุตจากคุณจากนั้นตีความมันเป็นคำสั่งอย่างน้อยหนึ่งคำสั่งเพื่อจัดการไฟล์หรือรันโปรแกรมอื่น ก่อนการประดิษฐ์ GUI เปลือกคือส่วนติดต่อผู้ใช้หลักของระบบปฏิบัติการ บน MS-DOS เชลล์นั้นถูกเรียกใช้command.com
และมีคนเพียงไม่กี่คนที่เคยลองใช้อันอื่น อย่างไรก็ตามบน Unix มีเชลล์จำนวนมากที่ผู้ใช้สามารถเลือกได้
พวกเขาสามารถแบ่งออกเป็น 3 ประเภท เปลือกหอยบอร์นได้ใช้ไวยากรณ์ที่ได้มาจากเดิมที่บอร์นเชลล์ C เชลล์ใช้ไวยากรณ์จากC เชลล์ดั้งเดิม จากนั้นก็จะมีเชลล์แบบดั้งเดิมที่คิดค้นไวยากรณ์ของตัวเองหรือยืมมาจากภาษาการเขียนโปรแกรมบางอย่างและโดยทั่วไปจะได้รับความนิยมน้อยกว่าสองประเภทแรก
คำสั่งในตัวเป็นเพียงคำสั่งที่เชลล์ดำเนินการเองแทนการตีความว่าเป็นการร้องขอให้โหลดและรันโปรแกรมอื่น นี่มีผลกระทบหลักสองประการ ก่อนอื่นมักจะเร็วกว่าเพราะการโหลดและเรียกใช้โปรแกรมต้องใช้เวลา แน่นอนยิ่งคำสั่งใช้เวลาในการรันนานเท่าไรเวลาโหลดที่มีนัยสำคัญน้อยลงเมื่อเทียบกับเวลาทำงานโดยรวม (เนื่องจากความเร็วในการโหลดค่อนข้างคงที่)
ประการที่สองคำสั่งในตัวสามารถส่งผลกระทบต่อสถานะภายในของเชลล์ นั่นเป็นเหตุผลว่าทำไมคำสั่งเช่นนั้นcd
ต้องมีอยู่แล้วภายในเนื่องจากโปรแกรมภายนอกไม่สามารถเปลี่ยนไดเรกทอรีปัจจุบันของเชลล์ได้ คำสั่งอื่น ๆ เช่นecho
อาจมีอยู่แล้วภายในเพื่อประสิทธิภาพ แต่ไม่มีเหตุผลที่แท้จริงที่พวกเขาไม่สามารถเป็นคำสั่งภายนอก
คำสั่งใดที่มีอยู่แล้วภายในจะขึ้นอยู่กับเชลล์ที่คุณใช้ คุณจะต้องศึกษาเอกสารประกอบของรายการ (เช่นbash
คำสั่งในตัวของรายการอยู่ในบทที่ 4 ของคู่มือ ) type
คำสั่งสามารถบอกคุณได้ถ้าคำสั่งในตัว (ถ้าเปลือกของคุณเป็น POSIX ได้) เพราะ POSIX กำหนดว่าtype
จะเป็นในตัว หากwhich
ไม่ใช่ built-in ในเชลล์คุณอาจไม่รู้เกี่ยวกับ built-in ของ shell แต่จะค้นหาโปรแกรมภายนอก