Ubuntu 18.04下Bash脚本卸载PostgreSQL弹出确认框如何解决
问题原因
你遇到的弹窗是Debian/Ubuntu系统中debconf包管理组件的交互式配置提示,apt/apt-get命令自带的-y参数仅能跳过「是否确认执行当前操作」的基础确认,无法覆盖debconf弹出的服务启停、配置文件处理类的二次确认窗口,所以脚本执行时会卡在等待输入的步骤。
解决方案
在执行apt相关命令前临时指定DEBIAN_FRONTEND环境变量为noninteractive,即可强制关闭所有交互提示,全程自动执行:
- 单条命令使用方案:
DEBIAN_FRONTEND=noninteractive apt remove --purge -y postgresql-12 && DEBIAN_FRONTEND=noninteractive apt autoremove -y
- 脚本批量使用方案:如果你的脚本中存在多条apt相关操作,可以在脚本开头直接导出该环境变量,后续所有apt命令都不需要再加前缀:
#!/bin/bash export DEBIAN_FRONTEND=noninteractive # 后续的卸载、安装等apt操作都可以直接执行 apt remove --purge -y postgresql-12 apt autoremove -y
补充说明
如果上述方案还是遇到特殊的确认场景,也可以通过管道传入yes命令自动填充确认输入:
yes | apt remove --purge -y postgresql-12 && yes | apt autoremove -y
该方案会给所有交互提示默认返回确认输入,适配性更高但可控性弱于非交互模式方案。
内容的提问来源于stack exchange,提问作者Fausto70
相关产品推荐
相关产品推荐

