解决方法
打开360安全卫士->电脑体检->左下角防护中心->6层系统防护查看->进程防护”关闭”
故障现象
用任何方式开启git-bash都需要等待1秒gitb-bash的黑框才出现, 并且需要等待大约5秒bash的输入界面才出现.
同时使用Cygwin和MinGw测试后结果一样.
其它解决方案
有趣的是, 在上面这个链接里的其中一条解决方案可以改善(仅改善, 并未完全解决)这个卡顿问题
那就是修改git-bash的profile文件部分
- 进入git安装目录的etc目录中
- 找到profile文件
- 在最后加入以下代码
| 1 | export PS1=’$’ |
这种方法会导致bash里没有任何有好提示, 比如路径提示, 机器名, 用户名提示.
而且这个办法不会解决启动git-bash慢的问题, 仅仅解决启动git-bash后每次按回车的反应比较快.
其实跟踪分析后, 可以把表面导致慢的原因定位在以下代码:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | for postinst in $(export LC_COLLATE=C; echo /etc/post-install/*.post); do [ -e “${postinst}” ] && . “${postinst}” done if [ ! “x${BASH_VERSION}” = “x” ]; then HOSTNAME=”$(/usr/bin/hostname)” # 此处是表面导致启动卡顿的原因 profile_d sh [ -f “/etc/bash.bashrc” ] && . “/etc/bash.bashrc” elif [ ! “x${KSH_VERSION}” = “x” ]; then typeset -l HOSTNAME=”$(/usr/bin/hostname)” # 此处是表面导致启动卡顿的原因 profile_d sh PS1=$(print ‘\033]0;${PWD}\n\033[32m${USER}@${HOSTNAME} \033[33m${PWD/${HOME}/~}\033[0m\n$ ‘) elif [ ! “x${ZSH_VERSION}” = “x” ]; then HOSTNAME=”$(/usr/bin/hostname)” # 此处是表面导致启动卡顿的原因 profile_d sh profile_d zsh PS1='(%n@%m)[%h] %~ %% ‘ elif [ ! “x${POSH_VERSION}” = “x” ]; then HOSTNAME=”$(/usr/bin/hostname)” PS1=”$ “ else HOSTNAME=”$(/usr/bin/hostname)” profile_d sh PS1=”$ “ fi |
也就是说360安全卫士的进程保护功能会对启动sh.exe这个操作做拦截并进行行为分析,
然后干扰到git-bash的正常启动速度.
为了证实这个猜测, 可以直接去双击启动git-bash的以下路径
bin\sh.exe
可以看到弹出黑框并显示输入界面的速度非常慢.
然后安装上面的方法禁止360安全卫士的进程保护后, 再双击运行”bin\sh.exe”将会变的很快.
环境信息
360安全卫士版本: 11.5.0.1004
系统版本: Windows 10
git版本: 2.16.2.windows.1
- 本文作者: x22x22
- 本文链接: http://www.fullstackmemo.com/2018/04/03/360-bash-lags/
- 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

