如何在脚本中批量执行多个omz命令?
问题:Oh My Zsh的
omz命令串联执行失败,仅第一个命令生效 我有一个利用omz命令安装和配置Oh My Zsh的基础脚本,代码片段如下:
/bin/zsh -i -c "\ omz theme set pygmalion &&\ omz plugin enable nvm &&\ omz plugin enable zsh-autosuggestions"
但遗憾的是只有第一个命令能运行成功。即使直接在shell中执行:
omz theme set pygmalion && omz plugin enable nvm && omz plugin enable zsh-autosuggestions
也仅有第一个主题设置命令会被执行。请问如何在脚本中一次性运行所有这些命令?
解决方案
问题根源
omz theme set命令执行后会触发当前shell会话重启,目的是让主题变更立即生效,但这会直接中断后续通过&&串联的命令执行链,导致后面的插件启用命令根本没机会运行。
方法1:拆分命令为独立的交互式会话
把每个omz命令单独放在一个新的Zsh交互式会话中执行,这样前一个命令的shell重启不会影响下一个命令:
/bin/zsh -i -c "omz theme set pygmalion" && \ /bin/zsh -i -c "omz plugin enable nvm" && \ /bin/zsh -i -c "omz plugin enable zsh-autosuggestions"
方法2:直接修改配置文件(更高效)
跳过omz命令的会话中断问题,直接编辑Oh My Zsh的核心配置文件~/.zshrc,最后手动加载配置生效:
# 修改主题配置 sed -i 's/^ZSH_THEME=.*/ZSH_THEME="pygmalion"/' ~/.zshrc # 在插件列表中添加nvm和zsh-autosuggestions sed -i '/^plugins=(/ s/)/ nvm zsh-autosuggestions)/' ~/.zshrc # 立即加载配置使变更生效 source ~/.zshrc
注:如果你的
~/.zshrc中plugins行格式特殊(比如换行书写),可能需要调整sed命令的匹配规则,或者手动编辑配置文件。
内容的提问来源于stack exchange,提问作者Alexandre Daubricourt
相关产品推荐
相关产品推荐

