ในการเรียกใช้สคริปต์เชลล์บน macOS ให้เปิด Terminal ไปที่โฟลเดอร์ที่มี.shไฟล์ และเรียกใช้ด้วยตัวแปลภาษาของสคริปต์นั้น ตัวอย่างเช่นbash hello.shคำสั่ง `run` จะเรียกใช้สคริปต์ Bash โดยไม่ต้องเปลี่ยนสิทธิ์การเข้าถึง หากคุณต้องการเรียกใช้เป็นคำสั่ง ให้ทำให้ไฟล์นั้นสามารถเรียกใช้งานได้ด้วยคำสั่ง `executable` chmod +x hello.shจากนั้นเรียกใช้คำ สั่ง `executable` ./hello.shวิธีการเหล่านี้ใช้ได้กับ macOS เวอร์ชันปัจจุบัน
ตรวจสอบสคริปต์ก่อนเรียกใช้งาน
สคริปต์เชลล์เป็นไฟล์ข้อความธรรมดาที่มีคำสั่งต่างๆ คำสั่งเหล่านั้นจะทำงานด้วยสิทธิ์ของบัญชีผู้ใช้ของคุณ ดังนั้นสคริปต์จึงสามารถแก้ไขหรือลบไฟล์ ติดตั้งซอฟต์แวร์ หรือส่งข้อมูลผ่านเครือข่ายได้ อ่านสคริปต์ที่คุณได้รับก่อนเรียกใช้ โดยเฉพาะอย่างยิ่งหากสคริปต์นั้นขอรหัสผ่านผู้ดูแลระบบหรือใช้คำสั่ง `sudo accretionary` ควรsudoเรียกใช้สคริปต์จากแหล่งที่คุณเชื่อถือเท่านั้น การเปลี่ยนสิทธิ์ของไฟล์ไม่ได้ทำให้เนื้อหาของไฟล์ปลอดภัย
Apple อธิบายว่าสคริปต์เชลล์คือไฟล์ข้อความที่ประกอบด้วยคำสั่ง UNIX และอธิบายวิธีการใช้ shebang เพื่อเลือกเชลล์ที่จะรันสคริปต์ ดูคู่มือการใช้งานเทอร์มินัลของ Apple เกี่ยวกับ สคริปต์เชลล์
เรียกใช้สคริปต์ .sh ด้วย Bash
นี่เป็นวิธีที่ง่ายที่สุดในการเรียกใช้สคริปต์ Bash คุณไม่จำเป็นต้องเพิ่มสิทธิ์ในการเรียกใช้งานก่อน
สร้างหรือค้นหาสคริปต์ สคริปต์เชลล์สามารถเขียนได้ในโปรแกรมแก้ไขข้อความธรรมดาใดก็ได้ สำหรับการทดสอบอย่างรวดเร็ว ให้เปิด TextEdit เลือกFormat > Make Plain Text แล้วป้อนสองบรรทัดนี้:
#!/bin/bash
echo "Hello from macOS"
บันทึกไฟล์เป็นhello.sh. ในกล่องโต้ตอบการบันทึก ตรวจสอบว่าชื่อไฟล์ลงท้ายด้วย.shและ TextEdit ไม่ได้เพิ่ม.txt. บรรทัดแรกคือ shebang: ซึ่งใช้ระบุว่า Bash เป็นตัวแปลภาษาเมื่อสคริปต์ถูกเรียกใช้โดยตรง บรรทัดที่สองจะพิมพ์ข้อความสั้นๆ
ไฟล์ hello.sh ตัวอย่างประกอบด้วย shebang ตามด้วยคำสั่งที่ใช้พิมพ์ข้อความ
เปิด Terminal แล้วไปที่โฟลเดอร์ของไฟล์ กด Command-Space พิมพ์ Terminal แล้วกด Enter หากคุณบันทึกไฟล์ไว้ใน Downloads ให้ป้อน:
cd ~/Downloads
กด Enter หลังจากแต่ละคำสั่ง คุณสามารถพิมพ์lsเพื่อแสดงรายการไฟล์และยืนยันว่าไฟล์นั้นhello.shมีอยู่จริง เปลี่ยนDownloadsไปยังโฟลเดอร์ที่คุณใช้จริง หากชื่อโฟลเดอร์หรือไฟล์มีช่องว่าง ให้ใส่เส้นทางไว้ในเครื่องหมายอัญประกาศ เช่นcd "$HOME/My Scripts".
ใช้คำสั่ง cd เพื่อเปิดโฟลเดอร์ที่มีสคริปต์ จากนั้นตรวจสอบชื่อโฟลเดอร์ด้วยคำสั่ง ls
เรียกใช้สคริปต์ด้วย Bash ป้อนชื่อสคริปต์หลังเครื่องหมายโคลอนbash(:)
bash hello.sh
หน้าต่างเทอร์มินัลควรแสดงข้อความHello from macOSว่า ถ้าสคริปต์ใช้ไวยากรณ์ Zsh แทน Bash ให้รันคำสั่ง `zsh -l` zsh hello.shโดยปกติแล้วเชลล์ที่เปิดขึ้นมาในโหมดโต้ตอบในเทอร์มินัลคือ Zsh แต่ไม่ได้หมายความว่าทุกสคริปต์จะต้องรันด้วย Zsh ให้ใช้ตัวแปลภาษาที่สคริปต์นั้นเขียนขึ้นมา โดยปกติแล้ว shebang ของสคริปต์จะระบุตัวแปลภาษานั้น
เรียกใช้สคริปต์ในรูปแบบไฟล์ปฏิบัติการ
คุณยังสามารถเรียกใช้สคริปต์โดยตรงได้โดยใช้พาธของไฟล์ วิธีนี้มีประโยชน์เมื่อคุณต้องการเรียกใช้สคริปต์เหมือนคำสั่งขนาดเล็กคำแนะนำของ Apple เกี่ยวกับการสร้างไฟล์ที่สามารถเรียกใช้งานได้ในเทอร์มินัลนั้น ใช้chmodขั้นตอนนี้เช่นกัน
ให้สิทธิ์ในการเรียกใช้งาน ในหน้าต่างเทอร์มินัลและโฟลเดอร์เดียวกัน ให้รันคำสั่งต่อไปนี้:
chmod +x hello.sh
คำสั่งนี้จะเพิ่มสิทธิ์ในการเรียกใช้งานให้กับไฟล์นี้ การเปลี่ยนแปลงนี้มีผลเพียงครั้งเดียว เว้นแต่จะมีการรีเซ็ตสิทธิ์ในภายหลัง หลีกเลี่ยงการตั้งค่าสิทธิ์ที่กว้างเกินความจำเป็น การchmod +xตั้งค่านี้ก็เพียงพอแล้วสำหรับสคริปต์ส่วนตัวของคุณ
คำสั่ง chmod +x จะกำหนดให้ไฟล์ hello.sh สามารถเรียกใช้งานได้
เรียกใช้งานจากโฟลเดอร์ปัจจุบัน พิมพ์:
./hello.sh
คำสั่งนี้./บอกให้เชลล์เรียกใช้ไฟล์ในไดเร็กทอรีปัจจุบัน หากไม่มีคำสั่งนี้ เชลล์จะค้นหาในโฟลเดอร์ที่ระบุไว้ในรายการPATHแทนที่จะเป็นโฟลเดอร์ปัจจุบัน หากคุณอยู่ที่อื่น ให้ใช้คำสั่งเพื่อcdกลับไปยังโฟลเดอร์ของสคริปต์ หรือป้อนพาธแบบเต็ม เช่น~/Downloads/hello.sh
การเรียกใช้ ./hello.sh จะเริ่มสคริปต์ที่ทำงานได้และแสดงผลลัพธ์
ข้อผิดพลาดทั่วไปและวิธีแก้ไข
ข้อความ “Permission denied” หลังจากใช้งาน./hello.sh: โปรดตรวจสอบชื่อไฟล์ จากนั้นจึงเรียกใช้chmod +x hello.shหรือใช้bash hello.shหากเป็นสคริปต์ Bash และคุณไม่ต้องการเรียกใช้งานโดยตรง
“ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว”: ยืนยันโฟลเดอร์ด้วยคำสั่ง `npm install` pwd, แสดงรายการเนื้อหาด้วยคำสั่ง `npm list` ls, และตรวจสอบการสะกดและการใช้ตัวพิมพ์ใหญ่ ตรวจสอบให้แน่ใจว่าไฟล์นั้นไม่ได้ชื่อว่าhello.sh.txt`.`
ข้อความ “ไม่พบคำสั่ง” ภายในสคริปต์: สคริปต์อาจต้องพึ่งพาโปรแกรมเสริมบางตัวที่หายไปหรือไม่มีอยู่ในระบบPATHโปรดตรวจสอบเอกสารประกอบของสคริปต์ก่อนติดตั้งสิ่งใดๆ
ข้อความ "ตัวแปลภาษาไม่ถูกต้อง" หรือข้อผิดพลาดที่ระบุว่า^M: บรรทัดแรกอาจชี้ไปยังตัวแปลภาษาที่ไม่พร้อมใช้งาน หรือไฟล์อาจใช้การขึ้นบรรทัดใหม่แบบ Windows ตรวจสอบ shebang และบันทึกไฟล์โดยใช้การขึ้นบรรทัดใหม่แบบ Unix (LF)
คุณควรใช้วิธีใด?
ใช้bash hello.shสำหรับการเรียกใช้งานอย่างรวดเร็วเมื่อคุณรู้ว่าเป็นสคริปต์ Bash ใช้chmod +x hello.shตามด้วย./hello.shเมื่อคุณต้องการเรียกใช้งานโดยตรงและให้ shebang เลือกตัวแปลภาษา วิธีการทั้งสองนี้ไม่ได้ติดตั้งส่วนประกอบที่ขาดหายไป แก้ไขคำสั่งที่ไม่เข้ากัน หรือตรวจสอบว่าสคริปต์นั้นน่าเชื่อถือหรือไม่