ประการแรก นามแฝงคือ ชั่วคราว และถูกต้อง สำหรับเชลล์ที่กำลังทำงานอยู่เท่านั้น. เมื่อคุณเรียกใช้ alias.sh
ไฟล์มันดำเนินการ ในเปลือกของมันเองไม่ได้อยู่ในเปลือกที่ถูกเรียกใช้ ดังนั้นแหล่งที่มาของสคริปต์ ~/.bash_aliases
(ทำไมไฟล์นี้ถึงไม่ใช่ /etc/.bash_aliases
? ฉันคิดว่าคุณต้องการอย่างหลัง?) แต่เมื่อสคริปต์จบลง เชลล์ก็จะออกและนามแฝงใดก็ตามที่สามารถกำหนดได้ใน ~/.bash_aliases
ไฟล์ พวกเขาหายไป
นั่นคือความแตกต่างระหว่าง วิ่ง เชลล์สคริปต์และ การจัดหา มัน. หากคุณเรียกใช้เชลล์สคริปต์ เชลล์จะทำงานในเชลล์ของตัวเอง ดังนั้นการเปลี่ยนแปลงใดๆ ในสภาพแวดล้อม นามแฝง และสิ่งที่คล้ายกันที่ทำในสคริปต์จะไม่ส่งผลกระทบต่อเชลล์พาเรนต์ (เชลล์ที่สคริปต์เริ่มต้น) แต่เมื่อคุณใช้สคริปต์เดียวกัน สคริปต์จะทำงาน ในเชลล์ปัจจุบันดังนั้นการเปลี่ยนแปลงทั้งหมดจะคงอยู่หลังจากสคริปต์เสร็จสิ้น (แน่นอนว่าการเปลี่ยนแปลงทั้งหมดจะอยู่ตราบเท่าที่เชลล์ยังคงอยู่ - หากคุณออกจากเชลล์ การเปลี่ยนแปลงทั้งหมดจะหายไปอีกครั้ง)
โดยคำนึงถึงสิ่งนี้หากคุณต้องการนามแฝงจากไฟล์ /etc/.bash_aliases
ที่จะสามารถใช้ได้ ผู้ใช้คนใด ใน เชลล์ใด ๆ ที่พวกเขาเรียกใช้ไฟล์จะต้องมาจาก /etc/bash.bashrc
ไฟล์. ไฟล์นี้ถูกเรียกใช้งานเมื่อใดก็ตามที่เชลล์ใดๆ (จากผู้ใช้ใดๆ) เริ่มทำงาน และโดยทั่วไปจะใช้เพื่อตั้งค่าสภาพแวดล้อมเริ่มต้น
ดังนั้น หากคุณเพิ่มบรรทัดต่อไปนี้ต่อท้าย /etc/bash.bashrc
(แน่นอน คุณต้องทำในฐานะ root เพื่อให้สามารถแก้ไขไฟล์ได้):
แหล่งที่มา /etc/.bash_aliases
คุณควรได้รับสิ่งที่คุณต้องการ
เดอะ alias.sh
ไฟล์ไม่จำเป็นเลย