Những gì bạn đang hỏi không thực sự có ý nghĩa nhiều.
từ khóa có nghĩa là một từ là một phần của cú pháp của shell. Những người được công nhận thông qua tokenising. Trích dẫn chúng là đủ để vỏ ngừng nhận ra.
Có thể đặt bí danh cho một từ khóa trong hầu hết các shell. Vì vậy, các bí danh được ưu tiên hơn các từ khóa (thực tế chúng được mở rộng sớm và có nhiều mã thông báo hơn sau đó bạn có thể có nhiều bí danh, từ khóa) ...
bí danh (ngoại trừ các bí danh zsh được xác định alias -g
chỉ được mở rộng ở vị trí lệnh), vì vậy thường không có trong builtin the-alias
.
các hàm được ưu tiên hơn các nội dung và các nội dung trên các lệnh bên ngoài (và sau đó $PATH
quyết định sử dụng hàm nào).
Bạn có thể buộc nội dung với:
builtin the-cmd and its args
(mặc dù cần lưu ý rằng nó không phải là một lệnh tiêu chuẩn).
Bạn có thể vô hiệu hóa các bí danh bằng cách trích dẫn chúng (mặc dù phiên bản được trích dẫn cũng có thể được đặt bí danh trong một số shell).
Vì vậy, ví dụ (ở đây cú pháp zsh), trong:
'while'() echo function while
alias 'while=echo alias while'
Viết while true
thực sự sẽ xuất ra alias while true
, và sẽ không có cách nào để sử dụng while
từ khóa vì trích dẫn nó sẽ vô hiệu hóa cả bí danh và từ khóa.
Bạn sẽ gọi while
hàm với ví dụ:
'whi'le whatever
Nếu có một while
nội trang (nhưng tất nhiên chúng sẽ không có trong các vỏ có while
từ khóa), bạn sẽ viết nó:
builtin while whatever
Và để gọi while
lệnh, bạn sẽ viết:
env while whatever
hoặc trong zsh
(khi không trong sh
thi đua):
command while whatever
(trong các shell khác, command
chỉ ngăn chặn các chức năng, không phải nội dung)
Hoặc là
/full/path/to/while whatever
Tất nhiên, không có gì ngăn cản bạn làm những việc thậm chí còn tệ hại hơn như:
alias 'while=while "w"hile; do'
"while"() { while "whi"le; done; }
Mà, ít nhất trong zsh là hợp lệ (nhưng ngu ngốc).
command
loại bỏ tra cứu chức năng, nhưng cả hai đều không chỉ định từ đồng nghĩa còn lại nào sẽ được sử dụng. Tôi đang tìm cách để chỉ định chỉ thực hiện một từ đồng nghĩa cụ thể .