![매개변수로 Zsh Hook 함수 정의](https://linux55.com/image/178882/%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A1%9C%20Zsh%20Hook%20%ED%95%A8%EC%88%98%20%EC%A0%95%EC%9D%98.png)
zshrc나 프롬프트에서 정의하는 대신 zsh를 시작할 때 후크 함수를 매개변수나 env var로 정의할 수 있는지 궁금합니다.
예를 들어 ;
zsh -F preexec() { date } -F chpwd() { pwd }
감사합니다
답변1
다음과 같은 지원 코드를 추가하지 않으면 쉽지 않습니다 ~/.zshrc
.
if [[ -o interactive && $1 = eval ]]; then
"$@"; argv=()
fi
그런 다음 다음과 같이 호출하십시오 zsh
.
zsh -s eval 'preexec() date; chpwd() pwd'
예를 들어.
환경 변수와 동일:
if (($+ZSH_STARTUP_CODE)); then
eval " $ZSH_STARTUP_CODE"
fi
다음과 같이 호출됩니다 zsh
.
ZSH_STARTUP_CODE='preexec() date; chpwd() pwd' zsh
그러나 env 변수는 상속되므로 해당 환경에서 시작된 모든 zsh 인스턴스에 영향을 미치며 환경에서 데이터를 자동화하면 일반적으로 긴장됩니다.