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...
に添ってまたアップデートかな.