zsh 작업 출력 및 fg 동작 구성

zsh 작업 출력 및 fg 동작 구성

최근까지 나는 zsh의 fgand 명령이 작동하는 방식에 매우 만족했습니다 .jobs

  • 그냥 fg-> 가장 최근의 백그라운드 작업을 다시 포그라운드로 가져옵니다.
  • jobs-> 명령 이름(매개변수 포함)을 표시하고 PID도 표시합니다(기억할 수 없음).

최신 Fedora 33 업데이트 이후 이러한 zsh 동작은 (나에게) 매우 짜증나는 방식으로 변경되었습니다.

  • fg작업 ID가 가장 낮은 작업이 이제 포그라운드로 이동됩니다(즉, 가장 최근의 백그라운드 작업이 아님).
  • "jobs" 출력은 더 간결합니다. 예를 들면 다음과 같습니다.
[3]  + suspended (signal)  mutt
[4]  - suspended

작업이 4vim 세션인 경우...

그래서 일부 zsh 기본값이 변경된 것으로 가정합니다. 그래서 내 질문은: 어떻게 더 유용한 동작을 구성 fg하고 jobs반환할 수 있습니까?

(이것은 어떻게 jobs인수 및 pid와 함께 명령 이름을 항상 표시하고 fg가장 최근의 백그라운드 작업을 전경으로 가져올 수 있는지를 의미합니다.)

(현재 zsh-5.8-3.fc33.x86_64에 있습니다.)

편집 1:예시 세션:

$ zsh
~ $ man man

zsh: suspended  man man
~ $ vim blah
zsh: suspended  
~ $ jobs
[1]  - suspended  man man
[2]  + suspended  
~ $ fg
[2]  - continued  

zsh: suspended  
zsh: suspended  
~ $ jobs
[1]  + suspended  man man
[2]  - suspended

CtrlZ매번 포그라운드 작업을 일시 중지했습니다. +출력에서 태그를 찾습니다 jobs. 또한 나를 놀라게 한 것은 zsh: suspendedvim을 두 번째로 일시 중지한 후 두 줄이 나왔다는 것입니다 . 이미 hang man 프로세스에 hang 신호가 다시 전달되는 것 같나요?

편집 2:작업 제어 문제는 작업이 vim. vim을 호출하는 방법에 대한 자세한 내용은 다음과 같습니다.

$ which vim
vim=__vi_internal_vim_alias
$ alias vim
vim=__vi_internal_vim_alias
$ typeset -f __vi_internal_vim_alias
__vi_internal_vim_alias () {
    (
        test -f /usr/bin/vim && exec /usr/bin/vim "$@"
        test -f /usr/bin/vi && exec /usr/bin/vi "$@"
    )
}

글쎄요, 이 정의는 내 프로필에서 나온 것이 아닙니다. 시스템 변경으로 인해 발생하는 것 같습니다. vim작업 제어를 호출하면 \vim문제가 다시 발생하지 않습니다. 서브셸이 zsh의 명령줄 문자열 생성 및 기타 작업을 망쳐 놓은 것 같습니다. 당신은 또한 볼 수 있습니다다른관련된보고서.

그렇다면 이것은 어디에서 나온 것입니까?

$ cd /etc
$ grep -r __vi_internal_vim_alias . -r 2>/dev/null
./profile.d/vim.sh:__vi_internal_vim_alias()
./profile.d/vim.sh:        alias vi=__vi_internal_vim_alias
./profile.d/vim.sh:        alias vim=__vi_internal_vim_alias
./profile.d/vi.sh:__vi_internal_vim_alias()
./profile.d/vi.sh:        alias vi=__vi_internal_vim_alias
./profile.d/vi.sh:        alias vim=__vi_internal_vim_alias
$ rpm -qf ./profile.d/vim.sh 
vim-enhanced-8.2.2146-2.fc33.x86_64
$ rpm -qf ./profile.d/vi.sh 
vim-minimal-8.2.2146-2.fc33.x86_64

답변1

이는 vimFedora가 서브셸에서 vim을 시작하기 위해 시스템 전체 별칭을 정의하기 시작했기 때문에 발생합니다.

이로 인해 내용이 좌우로 손상되는 것처럼 보이므로 이제 이러한 별칭이 롤백됩니다.https://bugzilla.redhat.com/show_bug.cgi?id=1918575

관련 정보