You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本执行时跳过部分代码行的问题排查求助

问题分析与解决

1. zoxide、Vim插件步骤未执行的核心原因

从bash -x输出能看到,fzf安装完成后直接跳到了切换shell的步骤,中间代码完全没执行——这是因为fzf的默认安装脚本在检测到zsh存在时,会自动执行exec zsh替换当前bash进程,导致后续脚本代码被直接终止。

解决方法

给fzf安装命令添加参数,跳过自动切换shell的逻辑,仅完成核心安装:

~/.fzf/install --no-update-rc --key-bindings --completion --no-bash --no-fish

参数说明:

  • --no-update-rc:不自动修改shell配置文件(由yadm管理的dotfiles统一配置)
  • --key-bindings --completion:保留fzf的快捷键和补全功能
  • --no-bash --no-fish:仅针对zsh配置,避免冗余操作

2. yadm克隆失败后后续命令仍执行的问题

默认bash脚本不会因单个命令失败终止,所以yadm clone报错后,后续的yadm config、sparse-checkout reapply仍会执行,可能引发无效操作。

解决方法

两种可选方案:

方案一:命令级串联校验

用&&串联yadm相关命令,确保前一步成功才执行后一步:

~/.local/bin/yadm clone https://github.com/ferdinandyb/dotfiles.git && \
~/.local/bin/yadm config --add local.class minimal && \
~/.local/bin/yadm sparse-checkout reapply

方案二:全局错误终止

在脚本开头添加set -e,让脚本遇到任何命令失败时立即终止(适合严格的自动化场景):

#!/bin/bash
set -e

echo -e "\033[1mrunning minimal bootstrap\033[0m"
# 后续脚本内容...

额外优化建议

  • Vim插件安装:确保yadm已克隆plug.vim到~/.vim/autoload/目录,否则vim +PlugUpdate +qall会报错;可添加非交互式执行的额外参数避免异常:
    vim -E -s +PlugUpdate +qall
    
  • zoxide安装:添加--no-interactive参数避免潜在的交互阻塞:
    curl -sS https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash -s -- --no-interactive
    

内容的提问来源于stack exchange,提问作者fbence

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 14:54:57