Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม BASH

'#!' ใน Linux Shell Scripts คืออะไร?

#! – มักมีชื่อเล่นว่า shebangชาบังแฮชบังpoundbang – เราจะยึดติดกับ shebang ตลอดระยะเวลาของบทความนี้

พบได้ที่จุดเริ่มต้นของเชลล์สคริปต์ Linux นับไม่ถ้วน - แต่จริงๆ แล้วมันคืออะไร? มาทำลายมันกันเถอะ

ปกติจะหน้าตาประมาณนี้

#!/bin/bash

ที่ #! ปรากฏที่จุดเริ่มต้นของไฟล์ โดยปกติแล้วจะอยู่ที่บรรทัดแรก ตามด้วยพาธไปยังไฟล์สั่งการ (ในกรณีนี้ ไฟล์ bash เปลือก)

แสดงความคิดเห็น

เริ่มต้นด้วย #, ดังนั้นจึงไม่ได้ดำเนินการเป็นส่วนหนึ่งของตัวสคริปต์เอง อย่างไรก็ตาม จะส่งผลต่อการทำงานของสคริปต์ เพราะ

ดำเนินการตามคำสั่งล่าม

The shebang บอกระบบที่ล่ามจะใช้เพื่อเรียกใช้สคริปต์โดยให้เส้นทางไปยังล่ามที่ปฏิบัติการได้

  • มักจะวางไว้ที่จุดเริ่มต้นของไฟล์ ในบรรทัดแรก เพื่อให้ล่ามที่ถูกต้องสามารถจัดการส่วนที่เหลือของไฟล์ได้
  • เส้นทางที่กำหนดต้องเป็น เส้นทางสัมบูรณ์ เป็นไฟล์ปฏิบัติการที่เหมาะสม
  • สาย Shebang อาจมีตัวเลือกที่สามารถส่งผ่านไปยังล่ามได้ แต่การสนับสนุนในเรื่องนี้จะแตกต่างกันไปตามสภาพแวดล้อมของคุณ – การรวมตัวเลือกเดียวเท่านั้นจะปลอดภัยที่สุด

ตัวอย่าง

ด้านล่างนี้คือ #! ตัวอย่างและความหมาย:

ทุบตี

#!/bin/bash

การวางบรรทัดนี้ไว้ที่จุดเริ่มต้นของสคริปต์จะบอกระบบว่าควรดำเนินการโดยใช้ bash เชลล์ปฏิบัติการได้

zsh

#!/bin/zsh

การวางบรรทัดนี้ไว้ที่จุดเริ่มต้นของสคริปต์จะบอกระบบว่าควรดำเนินการโดยใช้ zsh เชลล์ปฏิบัติการได้

อ่านบทความของเราเกี่ยวกับความแตกต่างระหว่าง bash และ zsh ที่นี่!

หลาม

#!/usr/bin/env python3

เรียกใช้สคริปต์โดยใช้ Python 3 โปรดสังเกตว่า แทนที่จะระบุเส้นทางไปยัง python3 เรียกใช้งานได้ บรรทัดนี้จะค้นหาไฟล์ปฏิบัติการ python3 ที่กำหนดไว้ในปัจจุบันสำหรับสภาพแวดล้อมของผู้ใช้

ไม่มีอะไร!

#!/bin/false

ส่งกลับรหัสสถานะความล้มเหลวและไม่เรียกใช้สคริปต์ ใช้ในสคริปต์ที่ไม่ได้ตั้งใจให้ดำเนินการโดยตรง

ข้าม #!

หากคุณกำลังเรียกใช้สคริปต์ด้วย #! ชอบ:

./myscript.sh

ที่นี่ myscript.sh เป็นชื่อสคริปต์ของคุณ – the shebang ใช้เพื่อกำหนดว่าจะใช้ล่ามตัวใด

ด้านบนสามารถทำได้เฉพาะในสคริปต์ที่ผู้ใช้ปัจจุบันมีดำเนินการ ขออนุญาต

อย่างไรก็ตาม หากคุณทำสิ่งต่อไปนี้:

bash myscript.sh

…the ชีบัง บรรทัดคือไม่ ใช้เพื่อกำหนดว่าจะใช้ล่ามตัวใด ตามที่เราได้ระบุ bash ในคำสั่งที่ใช้เรียกมัน จำเป็นต้องอนุญาตการอ่านสำหรับสคริปต์เท่านั้นเนื่องจากสคริปต์ไม่ได้ถูกดำเนินการ bash กำลังดำเนินการ