zsh에서 사용할 수 있도록 bash 스크립트 변환

zsh에서 사용할 수 있도록 bash 스크립트 변환

다음 bash 스크립트는 여기에 게시됩니다.철사DWM(X Window Manager)에서 ST(터미널 창) 제목을 설정하는 방법입니다. .bashrc를 통해 이 섹션을 추가하면 원하는 결과를 얻을 수 있지만 zsh에서 사용할 수 있기를 원합니다.

set_title(){
   local cmd=$BASH_COMMAND
   case $cmd in
   fg) cmd=$(jobs %); cmd=${cmd##"${cmd%  *}  "};;
   fg\ *|%*) cmd=$(jobs "${cmd#fg }"); cmd=${cmd##"${cmd%  *}  "};;
   esac
   printf '\e]2;%s\e\\' "${TERM%%-*} ${cmd//[$'\e\a']/#}"
}
trap set_title DEBUG

.zshrc에서 bash 스크립트라고 부르려고 했지만 예상대로 창 제목이 변경되지 않습니다. zsh에서 사용하기 위해 이것을 변환하는 데 도움을 주시면 대단히 감사하겠습니다.

답변1

다음과 같이 보일 수 있습니다:

TRAPDEBUG() {
  [[ $zsh_eval_context[1] = toplevel ]] || return
  local cmd=$ZSH_DEBUG_CMD
  case $cmd in
    (fg)
      cmd=$jobtexts[${(k)jobstates[(r)*:+:*]}];;
    (('fg '|%)<->)
      cmd=$jobtexts[${(M)cmd%%<->}];;
  esac
  printf '\e]2;%s\e\\' "${TERM%%-*} ${cmd//[$'\e\a']/#}"
}

관련 정보