มีสองสภาวะแวดล้อมการโปรแกรมมิงที่พร้อมใช้งานบนระบบปฏิบัติการยูนิกซ์ที่เหมือนทัวริงสมบูรณ์และสามารถเรียกโปรแกรมอื่น ๆ ได้: awk , และsh , ตระกูลเชลล์ Bourne / POSIX AWK มุ่งเน้นไปที่การประมวลผลข้อความ (มันเติมเต็มยูทิลิตี้พิเศษเพิ่มเติม) ในขณะที่ sh มุ่งเน้นไปที่การเป็นภาษากาวเพื่อรวมโปรแกรม Sh เป็นภาษาสคริปต์สากลบน Linux และทั่วโลกยูนิกซ์
POSIXมาตรฐานกำหนดคุณสมบัติที่จำเป็นของการดวลจุดโทษตัวเองและระบบสาธารณูปโภคที่เกี่ยวข้อง ระบบที่เหมือนยูนิกซ์ส่วนใหญ่สอดคล้องกับPOSIX 1003.1-2004 (aka Single Unix v3 หรือที่รู้จักในหัวข้อ Open Group Base Specification 6); เวอร์ชันล่าสุดของมาตรฐานนั้นคือPOSIX 1003.1-2008 (aka Single Unix v4 หรือที่รู้จักในหัวข้อ Open Group Base Specification 7)
ทุกระบบ Linux และ unix หรือเหมือน Unix มีเปลือกสไตล์บอร์นที่เส้นทาง/bin/sh
และระบบที่ไม่ใช่ของโบราณใด ๆ มีเปลือกที่สอดคล้องกับ POSIX (ยกเว้นข้อผิดพลาดเป็นครั้งคราว) ทุกที่ทันสมัยยูนิกซ์เช่นระบบ (รวมถึงลินุกซ์) สนับสนุนshebangsจึงจะทำงานโดยอัตโนมัติสคริปต์ในถ้าสายแรกคือ/bin/sh
#!/bin/sh
มีระบบ POSIX ที่sh
ตั้งอยู่ในสถานที่อื่น (โดยทั่วไปคือเลเยอร์จำลองในระบบปฏิบัติการที่คุณไม่คิดว่าเป็นเหมือน Unix จริงๆ)
ระบบลินุกซ์ในตัวอาจมีระบบBusyBoxแบบถอดลงซึ่งไม่ได้ใช้คุณสมบัติ POSIX ทั้งหมด BusyBox มีตัวเลือกเวลารวบรวมจำนวนมากเพื่อรองรับระบบขนาดเล็กดังนั้นจึงเป็นการยากที่จะรู้ว่าสิ่งที่คาดหวังล่วงหน้าคุณต้องปรับสคริปต์ของคุณให้เข้ากับอุปกรณ์เฉพาะ BusyBox เป็นการดำเนินการขนาดเล็กที่ใช้กันทั่วไปของ sh และสาธารณูปโภคที่หลากหลาย; อีกสิ่งหนึ่งที่คุณอาจพบคือสภาพแวดล้อมของเชลล์ที่ลดลงอย่างมากใน Android (รุ่นที่ใหม่กว่าจะน้อยกว่าปกติ)
ระบบลินุกซ์ที่ไม่ได้ฝังจะมีเส้นประหรือทุบตีเป็นส่วน/bin/sh
ใหญ่ Dash เป็นกระสุนขนาดเล็กและเร็วที่ใช้งานได้มากกว่าฟีเจอร์ POSIX Bash เป็นกระสุนขนาดใหญ่ที่มีคุณสมบัติมากกว่า
ระบบลินุกซ์ที่ไม่ได้ฝังจะติดตั้ง Bash เป็นเกือบทุก/bin/bash
ครั้ง ดังนั้นเพื่อความสะดวกในการพกพาบนระบบ Linux ที่ไม่ได้ฝังตัวคุณสามารถสันนิษฐานได้ว่า bash นั้นพร้อมใช้งาน ในบรรดาคุณสมบัติเพิ่มเติมที่เป็นประโยชน์ของ bash คืออาร์เรย์ความสามารถในการรับมือกับไฟล์ dot ได้อย่างสะดวกpipestatus
ตัวแปรเพื่อรับสถานะการส่งคืนของคำสั่งทั้งหมดในไพพ์ไลน์ตัวดำเนินการเปรียบเทียบเพิ่มเติมสำหรับเวลาไฟล์และ (ในเวอร์ชันล่าสุด) การจับคู่นิพจน์ปกติ .
หนึ่งในคุณสมบัติของการเขียนโปรแกรมเชลล์คือคุณไม่ได้ใช้เพียงแค่sh
โปรแกรม แต่คุณยังใช้โปรแกรมอรรถประโยชน์หลายอย่าง โปรแกรมจัดการไฟล์และการประมวลผลข้อความส่วนใหญ่บน Linux เป็นGNU coreutils (ในระบบฝังตัวโดยปกติจะมาจาก BusyBox)
หากคุณต้องการความสะดวกในการพกพานอกเหนือจาก Linux ทางออกที่ดีที่สุดคือติดกับ POSIX ตัวแปร unix อื่น ๆ อาจไม่มีการติดตั้ง bash (bash เป็นส่วนหนึ่งของการติดตั้งมาตรฐานบน OSX แต่แพ็คเกจเสริมใน * BSD และ unices เชิงพาณิชย์ส่วนใหญ่) เกือบทั้งหมดยูนิกซ์สายพันธุ์อื่น ๆ นอกเหนือจาก Linux และ OSX (เช่น * BSD และ Unices พาณิชย์) มีรุ่นบางส่วนของเปลือกกรอย่างน้อยpdksh ส่วนขยายที่สะดวกสบายของ bash จำนวนมากมาจาก ksh ดังนั้นจึงเป็นประโยชน์ในการเขียนสคริปต์ที่สามารถทำงานภายใต้ทั้งคู่ แต่การตรวจจับตำแหน่งที่ bash หรือ ksh ตั้งอยู่บนระบบที่ไม่รู้จักอาจมีความเจ็บปวดเล็กน้อย
เชลล์ไม่สามารถทำทุกอย่างได้ หากคุณต้องการภาษาที่มีความซับซ้อนยิ่งขึ้นตัวเลือกทั่วไปอีกสองตัวเลือกคือ Perl และ Python (อย่างอื่นที่อยู่ด้านหลังเป็นภาษาสคริปต์ยูนิกซ์) Perl เป็นภาษาสคริปต์แบบดั้งเดิมและระบบ Linux ที่ไม่ได้ฝังตัวไม่กี่ตัวขาดหายไป แต่ Python กำลังเพิ่มพูนขึ้น (ส่วนหนึ่งมาจากภาษาสคริปต์ที่แนะนำสำหรับ Ubuntu) ในโลกที่ไม่ใช่ Linux นั้น Perl เป็นส่วนหนึ่งของการติดตั้งพื้นฐานบน OSX และ OpenBSD มันเป็นตัวเลือก แต่ได้รับการติดตั้งบ่อยมากบน FreeBSD และเป็นทางเลือก แต่มักจะติดตั้งบน NetBSD
sh
ฉันเดา