exec
คำสั่งแทนที่กระบวนการเปลือกปัจจุบันมีคำสั่งที่ระบุ โดยปกติเมื่อคุณเรียกใช้คำสั่งกระบวนการใหม่จะเกิด (แยก) exec
คำสั่งไม่วางไข่กระบวนการใหม่ กระบวนการปัจจุบันจะถูกซ้อนทับด้วยคำสั่งใหม่แทน กล่าวอีกนัยหนึ่งคำexec
สั่งจะถูกดำเนินการแทนเชลล์ปัจจุบันโดยไม่ต้องสร้างกระบวนการใหม่
การใช้คำสั่ง exec ที่ใช้กันมากที่สุดสามวิธี:
1. การเปลี่ยนกระบวนการ
ตัวอย่างที่ 1:
หากคุณเปิดbash
เปลือกใหม่เป็น
$ bash
ในpstree
นั้นดูเหมือนว่า
├─gnomeขั้ว
├─bash───bash───pstree
bash
เชลล์ก่อนหน้านี้ยังอยู่ที่นั่นและคุณได้รับbash
เชลล์ใหม่ โดยที่ถ้าคุณเปิด bash shell ใหม่เป็น
$ exec bash
การpstree
แสดง
├─gnomeขั้ว
├─bash───pstree
ที่นี่เก่าbash
จะถูกแทนที่ด้วยใหม่ มีประโยชน์อย่างยิ่งที่จะออกจากการเข้าสู่ระบบหลายครั้งในหนึ่งคำสั่ง มีความปลอดภัยและกำจัดโอกาสในการออกจากเทอร์มินัลที่เปิดโดยไม่ได้ตั้งใจ ดูที่Exit จากทั้ง root และ user ด้วยคำสั่งเดียว
ตัวอย่าง -2:คุณสามารถเปิดไฟล์เป็น
$ exec vi filename.txt
เมื่อคุณออกจากระบบvi
ไม่จำเป็นต้องปิดเครื่องแยกต่างหากเนื่องจากเชลล์ถูกแทนที่แล้ว ทันทีที่คุณปิด vi เทอร์มินัลก็จะปิดเช่นกัน
2. วิธีการเปลี่ยนเส้นทางของ file descriptors ภายในเชลล์สคริปต์
exec
คำสั่งนอกจากนี้ยังสามารถนำมาใช้ในเชลล์สคริปต์เปิดแบบไดนามิกใกล้และคัดลอกอธิบายไฟล์ ที่อนุญาตให้ดำเนินการเปลี่ยนเส้นทางของ STDIN, STDERR, STDOUT และตัวอธิบายไฟล์อื่น ๆ ไปยังไฟล์ต่างๆภายในเชลล์สคริปต์แทนที่จะเป็นสตริงการเรียกใช้คำสั่ง หากคุณไม่ได้ระบุคำสั่งหรืออาร์กิวเมนต์คุณสามารถระบุสัญลักษณ์การเปลี่ยนเส้นทางและตัวอธิบายไฟล์เพื่อทำหน้าที่เหล่านี้
สมมติว่าคุณมีเชลล์สคริปต์ที่script.sh
คุณต้องการมีไฟล์บันทึกscript.log
คุณสามารถใช้exec
เป็น
LOG=/path/to/script.log
exec 1>>$LOG
exec 2>&1
ซึ่งเทียบเท่ากับ
./script &>> /path/to/script.log
./script >> /path/to/script.log 2>&1
3. การสร้างขั้นตอนของกระบวนการโดยใช้คำสั่ง exec
นอกจากนี้คุณยังสามารถใช้คำสั่ง exec เพื่อสร้างชุดของเชลล์สคริปต์ที่ดำเนินการตามลำดับเช่นเดียวกับขั้นตอนของกระบวนการ แทนที่จะวางไข่กระบวนการใหม่ทุกครั้งที่คุณต้องการถ่ายโอนการควบคุมไปยังสคริปต์ถัดไปที่คุณดำเนินการคำสั่ง exec
ในกรณีนี้คำสั่งสุดท้ายของแต่ละสเตจควรเป็นexec
คำสั่งที่เรียกใช้สเตจถัดไป
ดูการใช้exec
คำสั่งในเชลล์สคริปต์สำหรับข้อมูลเพิ่มเติม
หมายเหตุ:บางส่วนของข้อมูลข้างต้นนำมาจากสิ่งนี้