![zsh 작업 출력 및 fg 동작 구성](https://linux55.com/image/187619/zsh%20%EC%9E%91%EC%97%85%20%EC%B6%9C%EB%A0%A5%20%EB%B0%8F%20fg%20%EB%8F%99%EC%9E%91%20%EA%B5%AC%EC%84%B1.png)
최근까지 나는 zsh의 fg
and 명령이 작동하는 방식에 매우 만족했습니다 .jobs
- 그냥
fg
-> 가장 최근의 백그라운드 작업을 다시 포그라운드로 가져옵니다. jobs
-> 명령 이름(매개변수 포함)을 표시하고 PID도 표시합니다(기억할 수 없음).
최신 Fedora 33 업데이트 이후 이러한 zsh 동작은 (나에게) 매우 짜증나는 방식으로 변경되었습니다.
fg
작업 ID가 가장 낮은 작업이 이제 포그라운드로 이동됩니다(즉, 가장 최근의 백그라운드 작업이 아님).- "jobs" 출력은 더 간결합니다. 예를 들면 다음과 같습니다.
[3] + suspended (signal) mutt
[4] - suspended
작업이 4
vim 세션인 경우...
그래서 일부 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: suspended
vim을 두 번째로 일시 중지한 후 두 줄이 나왔다는 것입니다 . 이미 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
이는 vim
Fedora가 서브셸에서 vim을 시작하기 위해 시스템 전체 별칭을 정의하기 시작했기 때문에 발생합니다.
이로 인해 내용이 좌우로 손상되는 것처럼 보이므로 이제 이러한 별칭이 롤백됩니다.https://bugzilla.redhat.com/show_bug.cgi?id=1918575