Prezto でターミナルが終了できない不具合を一時的に回避する備忘録

Apple
Photo by hyt.

Cygwin の シェル zsh の便利な設定をまとめて導入可能な Prezto をアップデートすると,ターミナル(mintty)が正常終了できません.なぜだろうと思って,

$ ps ax

としてみると……

      PID    PPID    PGID     WINPID   TTY         UID    STIME COMMAND
    10948   12232   10948       6964  pty0      197609 22:04:22 /usr/bin/ps
    12232    8484   12232       7088  pty0      197609 22:04:18 /usr/bin/zsh
I    2792   12232    2792       2792  pty1      197609 22:04:19 /usr/bin/zsh
     8484       1    8484       8484  ?         197609 22:04:18 /usr/bin/mintty

なんと,zsh が2重起動しています.

$ pstree
?───mintty───zsh─┬─pstree
                 └─zsh

の様に,終了できない zsh のプロセスが残ってる.

原因は,Prezto に新たに加えられた付け加えられた非同期処理を利用するコードの様で,今のところ Prezto の未解決問題(Open Issue)の様です.なお,MacOS なんかでも同様らしい.

ZPrezto appears to run twice per instance. · Issue #1494 · sorin-ionescu/prezto
Description I noticed that whenever I open zsh, two zsh processes are launched per instance. Expected behavior zsh launc...
[Cygwin] Prezto makes zsh hang at exit · Issue #1493 · sorin-ionescu/prezto
Description On Cygwin, when zsh is used with prezto, exiting the shell (via exit or Ctrl+D) hangs the shell, and the pro...

確かに

$ cd /tmp
$ ls -alF
sorin-prompt-async-05oHVPQtvQ  sorin-prompt-async-InTaigx8hR
sorin-prompt-async-9rob1fUncu

のようにゴミが残ってますね.

回避方法1(Sorin テーマを使わない)

Prezto の sorin とか pure とかのテーマだからこうなるらしい.と言うことは,

$ vi ~/.zpreztorc
...
#
# Prompt
#

# Set the prompt theme to load.
# Setting it to 'random' loads a random theme.
# Auto set to 'off' on dumb terminals.
zstyle ':prezto:module:prompt' theme 'pws'

# Set the working directory prompt display length.
...

の様に影響を受けないテーマにすればよい.しかしこれだとかなりかなり寂しいプロンプトしか使えません.

回避方法2(Prezto の巻き戻し)

Prezto を zsh の async (非同期機能)を利用しないところまで一時的に巻き戻せば良いみたいですね.

私の場合は hyt という branch を切って(普通の人は master ブランチのまま使っていると思いますが),個人的な設定はそこに書き込むようにしているので,

$ cd ~/.zprezto
$ git checkout 9f1a41d
$ git checkout -b temp
$ rm -rf modules/prompt/external/async/
$ rm -rf modules/prompt/external/powerlevel9k/
$ git add -A
$ git commit
$ git checkout hyt runcoms

みたいな感じでしょうか.なお,本家の修正が来たら,

$ git branch -d temp

みたいな感じで消して,

Prezto の設定を複数PCで同期させる備忘録
シェル zsh の便利な設定をまとめて導入可能な prezto の設定を複数 PC で同期させるための細工についての備忘録です.なお,Prezto の導入や設定についてはとかをご覧ください.今回の目標は以下の通りです. Cygwin と M...

に添ってまたアップデートかな.

 

タイトルとURLをコピーしました