대화형으로 사용할 때 가능한 한 많은 동작을 zsh
시뮬레이션하고 싶습니다 . 끝에 sh
추가를 시도했지만 다음을 사용하는 zsh 플러그인을 사용하고 있기 때문에 (예 :emulate sh
~/.zshrc
emulate zsh
vcs_info
zsh-자동 제안, 그리고zsh 구문 강조), zsh를 대화형으로 실행한 후 다음 오류 메시지가 나타납니다.
vcs_info(): expecting numeric arg >= 1 for max-exports (got 2).
Defaulting to 2.
VCS_INFO_set:12: bad math expression: illegal character: {
_zsh_highlight:17: bad set of key/value pairs for associative array
위의 오류는 emulate sh
zsh 에뮬레이션이 필요한 zsh 플러그인에 영향을 미치고 있음을 나타냅니다. 나머지 zsh에 대해 zsh 에뮬레이션 모드를 유지하면서 사용자가 대화식으로 입력한 셸 명령에 대해서만 sh 에뮬레이션 모드를 활성화하는 올바른 방법은 무엇입니까?
~/.zshrc
문제를 해결하기 위해 아래 코드를 끝에 추가했습니다 . 잘 작동하는 것 같지만 실제로 맞는지는 모르겠습니다. 나는 또한 그것이 어떻게/왜 작동하는지 모릅니다.
function precmd_emulate_zsh() {
emulate zsh
}
function preexec_emulate_sh() {
emulate sh
}
autoload -Uz add-zsh-hook
add-zsh-hook -Uz precmd precmd_emulate_zsh
add-zsh-hook -Uz preexec preexec_emulate_sh