การใช้เครื่องหมายคำพูดเดี่ยวเพื่อชะลอการประเมินผลทำงานเพื่อกำหนดนามแฝงไดนามิกเช่นกัน นี่คือนามแฝงที่t
ใช้ในการแนบเชลล์ใหม่กับกระบวนการเอเจนต์ ssh ที่มีอยู่ซึ่งเริ่มต้นด้วยนามแฝงที่เรียกssh-start
ว่าเขียนโค้ดเชลล์ลงในไฟล์ใน 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;`
คำจำกัดความของข้อมูลt
นั้นไม่ดีเนื่องจากทำให้ข้อมูลใหม่จากการเรียกใช้ใหม่ssh-start
ถูกละเว้น การเปลี่ยนคำจำกัดความของนามแฝงของt
ที่จะอ้างถึงโดยลำพังใน. zshrc ของฉันให้พฤติกรรมที่ดีขึ้นมาก:
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`
สังเกตการขยายคำจำกัดความt
ตามที่ระบุโดยการwhich t
แสดงผลของอัญประกาศคู่ (การขยายคำสั่งหรือตัวแปรสภาพแวดล้อมแบบทันทีทันใด) เทียบกับเครื่องหมายคำพูดเดี่ยว (การประเมินคำสั่งและตัวแปรล่าช้า)