Sử dụng một trích dẫn để trì hoãn đánh giá cũng có tác dụng xác định bí danh động. Đây là một bí danh, t
được sử dụng để đính kèm một trình bao mới vào quy trình tác nhân ssh hiện có, được bắt đầu bằng một bí danh được gọi là ssh-start
ghi mã shell vào một tệp trong homedir:
mymistress:~> which ssh-start
ssh-start: aliased to eval `ssh-agent | tee ~/.ssh/ssh-agent.out` ; ssh-add ~/.ssh/id_rsa
mymistress:~> grep "alias t" .zshrc
alias t="eval `cat ~/.ssh/ssh-agent.out`"
mymistress:~> which t
t: aliased to eval SSH_AUTH_SOCK=/tmp/ssh-nZBZp29804/agent.29804; export SSH_AUTH_SOCK;\nSSH_AGENT_PID=29805; export SSH_AGENT_PID;\necho Agent pid 29805;`
Định nghĩa đó t
là xấu vì nó khiến thông tin mới từ một luồng mới ssh-start
bị bỏ qua. Thay đổi định nghĩa bí danh t
để được trích dẫn đơn trong .zshrc của tôi cho hành vi tốt hơn nhiều:
mymistress:~> grep "alias t" .zshrc
alias t='eval `cat ~/.ssh/ssh-agent.out`'
mymistress:~> source ~/.zshrc
mymistress:~> which t
t: aliased to eval `cat ~/.ssh/ssh-agent.out`
Lưu ý việc mở rộng định nghĩa t
như được cung cấp bởi which t
, cho thấy tác động của dấu ngoặc kép (mở rộng ngay lập tức các lệnh hoặc biến môi trường) so với dấu ngoặc đơn (đánh giá chậm các lệnh và biến).