สิ่งที่คุณถามไม่สมเหตุสมผลจริงๆ
คำหลักหมายถึงมันเป็นคำที่เป็นส่วนหนึ่งของไวยากรณ์ของเชลล์ เหล่านั้นได้รับการยอมรับผ่านโทเค็น การอ้างอิงมันเพียงพอสำหรับเชลล์ที่จะหยุดการรับรู้
เป็นไปได้ที่จะใช้นามแฝงของคีย์เวิร์ดในเชลล์ส่วนใหญ่ ดังนั้นนามแฝงจึงมีความสำคัญเหนือกว่าคำหลัก (เนื่องจากมีการขยายก่อนและมีโทเค็นมากขึ้นหลังจากที่คุณสามารถมีชื่อแทนคำหลักเพิ่มเติม) ...
นามแฝง (ที่มีข้อยกเว้นของนามแฝง zsh ที่กำหนดด้วยalias -gจะถูกขยายในตำแหน่งคำสั่งเท่านั้น) ดังนั้นโดยทั่วไปจะไม่เข้าbuiltin the-aliasมา
ฟังก์ชั่นมีความสำคัญมากกว่า builtins และ builtins เหนือคำสั่งภายนอก (แล้ว$PATHตัดสินใจว่าจะใช้อันไหน)
คุณสามารถบังคับ builtin ด้วย:
builtin the-cmd and its args
(แม้ว่ามันควรจะสังเกตว่ามันไม่ใช่คำสั่งมาตรฐาน)
คุณสามารถปิดการใช้งานนามแฝงโดยอ้างอิงพวกเขา (แม้ว่ารุ่นที่ยกมาอาจเป็นนามแฝงในบางเชลล์)
ตัวอย่างเช่น (นี่คือไวยากรณ์ zsh) ใน:
'while'() echo function while
alias 'while=echo alias while'
การเขียนwhile trueจะส่งออกจริงalias while trueและจะไม่มีวิธีการใช้whileคำหลักเนื่องจากการอ้างถึงมันจะปิดการใช้งานทั้งชื่อแทนและคำหลัก
คุณจะเรียกใช้whileฟังก์ชันด้วยเช่น:
'whi'le whatever
หากมีwhilebuiltin (แต่แน่นอนว่าพวกเขาจะไม่อยู่ใน shell เหล่านั้นที่มีwhileคีย์เวิร์ด) คุณต้องเขียนมัน:
builtin while whatever
และเพื่อเรียกwhileคำสั่งคุณจะเขียน:
env while whatever
หรือในzsh(เมื่อไม่ได้อยู่ในการshแข่งขัน):
command while whatever
(ในเชลล์อื่น ๆ , commandป้องกันเฉพาะฟังก์ชั่น, ไม่ใช่บิวอิน)
หรือ
/full/path/to/while whatever
แน่นอนไม่มีอะไรหยุดยั้งไม่ให้คุณทำสิ่งที่ยิ่งใหญ่กว่าเช่น:
alias 'while=while "w"hile; do'
"while"() { while "whi"le; done; }
ซึ่งอย่างน้อยใน zsh ถูกต้อง (แต่โง่)
commandระงับการค้นหาฟังก์ชัน แต่ไม่มีการระบุสิ่งใดในคำพ้องความหมายที่เหลืออยู่ที่จะใช้ ฉันกำลังมองหาวิธีที่จะระบุให้ใช้คำพ้องความหมายเฉพาะเท่านั้น