在DDEV中为Symfony系CLI工具(如Magento)配置自动补全遇阻求助
解决DDEV容器中Magento CLI自动补全报错
_get_comp_words_by_ref: command not found的问题 问题分析
报错_get_comp_words_by_ref: command not found是因为缺少bash-completion基础包,该函数是bash补全机制的核心依赖,DDEV Web容器默认未预装此包,导致bamarni/symfony-console-autocomplete生成的补全脚本无法正常运行。
解决步骤
1. 在Web容器中安装bash-completion
修改.ddev/web-build/Dockerfile,添加安装bash-completion的命令:
ENV COMPOSER_HOME="/usr/local/composer" ENV SHELL="bash" # 安装bash-completion基础包 RUN apt-get update && apt-get install -y bash-completion && rm -rf /var/lib/apt/lists/* RUN composer global require consolidation/cgr RUN $COMPOSER_HOME/vendor/bin/cgr bamarni/symfony-console-autocomplete # 移除清空COMPOSER_HOME的语句,确保全局Composer工具路径有效 # ENV COMPOSER_HOME=""
2. 确保bash-completion在shell启动时加载
修改.ddev/homeadditions/.bashrc.d/autocomplete,先加载bash-completion核心库,再初始化symfony-autocomplete:
export PATH="$PATH:/usr/local/composer/vendor/bin" # 加载bash-completion基础补全函数 source /usr/share/bash-completion/bash_completion eval "$(symfony-autocomplete)"
3. 重建容器并测试
执行以下命令重启DDEV容器:
ddev restart
进入容器后,输入magento并按
补充说明
bash-completion是绝大多数Shell自动补全脚本的依赖基础,必须预装才能让补全逻辑正常工作。- 原配置中
ENV COMPOSER_HOME=""会清空全局Composer的环境变量,导致后续无法找到已安装的symfony-autocomplete工具,因此需要移除该语句。
内容的提问来源于stack exchange,提问作者Sergey Repin
相关产品推荐
相关产品推荐

