작은 따옴표를 사용하여 평가를 지연 시키면 동적 별명도 정의 할 수 있습니다. 다음 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
큰 따옴표 (명령 또는 환경 변수의 즉각적인 내부 확장) 대 작은 따옴표 (명령 및 변수의 평가 지연)의 영향을 보여줍니다.