Fish shell 速度很慢,在 MacOS 10.15.6 上每个命令大约需要 1 秒

and*_*dii 3 macos xcode fish

将 XCode 更新到 11.6 后,fish shell 变得慢得难以忍受。执行每个命令大约需要 1 秒。常规的bash就很好了。

我正在MacOS 10.15.6跑步fish, version 3.0.2

XCode从11.3升级到11.6

例如:

~> __fish_vcs_prompt 
~> echo $CMD_DURATION
874
Run Code Online (Sandbox Code Playgroud)

快一秒了!

and*_*dii 7

原来问题是由 XCode11.6 不再提供 subversion 引起的。

将fish 升级到版本3.1.2 修复了该问题。因为 svn 在该版本中默认是禁用的。brew upgrade fish(感谢@faho 的建议)。

或者安装 svn:

运行以下可以解决问题:

~> brew install svn
~> __fish_vcs_prompt 
~> echo $CMD_DURATION
32
Run Code Online (Sandbox Code Playgroud)

我是如何发现问题的

对鱼的分析提供了一条线索:

~> fish --profile /tmp/profile -c fish_prompt; sort -nk2 /tmp/profile
...
181 12870   ---> __fish_git_prompt
1460594 1460594 -----> command svn info 2>/dev/null.
81  1460675 ----> set -l checkout_info (command svn info 2>/dev/null)
124 1462808 ---> __fish_svn_prompt
170 1478777 --> __fish_vcs_prompt
241 1481313 -> echo -n -s (set_color $fish_color_user) "$USER" $normal @ (set_color $fish_color_host) (prompt_hostname) $normal ' ' (set_color $color_cwd) (prompt_pwd) $normal (__fish_vcs_prompt) $normal $prompt_status $suffix " "
120 1482542 > fish_prompt
Run Code Online (Sandbox Code Playgroud)

1460594 1460594 -----> command svn info 2>/dev/null.是减速开始的线路。

并运行:

~> command svn info
svn: error: Failed to locate 'svn'.
svn: error: The subversion command line tools are no longer provided by Xcode.
Run Code Online (Sandbox Code Playgroud)

显示XCode不再提供svn

因此,通过自制软件安装 svn 解决了这个问题:brew install svn