Android

ทุบตี shebang

Shell Scripting - Introduction & Shebang

Shell Scripting - Introduction & Shebang

สารบัญ:

Anonim

ลำดับของอักขระ ( #! ) นี้เรียกว่า shebang และใช้เพื่อบอกระบบปฏิบัติการว่าตัวแปลใดที่จะใช้ในการแยกวิเคราะห์ส่วนที่เหลือของไฟล์

Shebang Interpreter Directive

คำสั่งล่าม Shebang ใช้แบบฟอร์มต่อไปนี้:

#!interpreter

  • คำสั่งจะต้องเป็นบรรทัดแรกในสคริปต์คำสั่งจะต้องเริ่มต้นด้วย shebang #! พื้นที่สีขาวหลังจากอักขระ shebang เป็นทางเลือกตัวแปลภาษาเป็นพา ธ แบบเต็มไปยังไฟล์ไบนารี (เช่น: /bin/sh /bin/bash ) อาร์กิวเมนต์ตัวเลือกเหล่านี้เป็นตัวเลือก

ตัวอย่าง:

  • #!/bin/bash - ใช้ bash เพื่อวิเคราะห์ไฟล์ #!/usr/bin/env perl - ใช้คำสั่ง env เพื่อค้นหาพา ธ ไปยัง executable perl #!/usr/bin/python ดำเนินการไฟล์โดยใช้ python ธ อน

ใช้ Shebang ใน Bash Scripts

หากไม่ได้ระบุ Shebang และผู้ใช้ที่กำลังเรียกใช้สคริปต์ Bash กำลังใช้เชลล์ตัวอื่นสคริปต์จะถูกแยกวิเคราะห์โดยค่าเริ่มต้นที่เชลล์ใช้ ตัวอย่างเช่นตัวแปลดีฟอลต์สำหรับ bash คือ bash และสำหรับ zsh คือ sh เพื่อให้แน่ใจว่าสคริปต์ของคุณจะถูกตีความด้วย Bash คุณจะต้องระบุเส้นทางที่ใช้งานได้โดยใช้ shebang

มีสองวิธีในการใช้คำสั่ง Shebang และตั้งล่าม

  1. การใช้พา ธ สัมบูรณ์ไปยังไบนารี bash:

    #!/bin/bash

    การใช้ยูทิลิตี env :

    #!/usr/bin/env bash

ข้อดีของการใช้วิธีที่สองคือมันจะค้นหา bash executable ในตัวแปรสภาพแวดล้อม $PATH ของผู้ใช้ หากมีมากกว่าหนึ่งเส้นทางในการ bash เส้นทางแรกจะถูกใช้โดยสคริปต์

เมื่อใช้ตัวเลือกแรกเพื่อเพิ่มตัวเลือกในการส่งเชลล์ Bash ให้กับล่าม ตัวอย่างเช่นหากต้องการรันสคริปต์ในโหมดแก้ไขข้อบกพร่องคุณต้องใช้ #!/bin/bash -x หากคุณใช้วิธี env คุณต้องใช้ set เพื่อประกาศตัวเลือก หากต้องการเปิดใช้งานโหมดแก้ไขข้อบกพร่องคุณจะต้องเพิ่ม set -x หลังบรรทัด shebang

ตัวอย่างสคริปต์

มาสร้างสคริปต์ง่ายๆโดยใช้ shebang ที่จะพิมพ์“ Hello, World” เปิดโปรแกรมแก้ไขข้อความของคุณและวางบรรทัดต่อไปนี้:

nano hello_world สวัสดีชาวโลก

#!/bin/bash echo "Hello, World"

เพื่อให้สามารถเรียกใช้สคริปต์โดยไม่ต้องระบุล่ามจากบรรทัดคำสั่งคุณจะต้องทำให้ไฟล์ปฏิบัติการ:

chmod +x hello_world

ตอนนี้ถ้าคุณสามารถเรียกใช้สคริปต์โดยพิมพ์ ./ ตามด้วยชื่อสคริปต์:

./hello_world

Hello, World

การเอาชนะ Shebang

หากมีเหตุผลบางอย่างที่คุณต้องการแทนที่ชุดล่ามในบรรทัด Shebang คุณจำเป็นต้องเรียกใช้สคริปต์โดยระบุเชลล์ที่ต้องการอย่างชัดเจน

ตัวอย่างเช่นการเรียกใช้สคริปต์ที่มีการระบุ #!/bin/sh ในบรรทัด Shebang โดยใช้ bash shell ที่คุณพิมพ์:

bash hello_world

โปรดทราบว่าไม่ใช่ความคิดที่ดีที่จะแทนที่ตัวแปลเชลล์เนื่องจากอาจนำไปสู่พฤติกรรมที่ไม่คาดคิดของสคริปต์

ข้อสรุป

ตอนนี้คุณควรมีความเข้าใจที่ดีเกี่ยวกับ Shebang คืออะไรและจะใช้งานอย่างไรในสคริปต์ Bash ของคุณ

bash terminal