如何通过Ansible生成Midnight Commander(MC)配置文件
Ansible场景下MC默认配置自动生成方案
核心逻辑
直接触发MC原生初始化逻辑生成配置,无需提前准备跨发行版兼容的预置配置文件,也不需要手动启动交互界面。
具体实现步骤
- 首先调用MC命令触发初始化,执行完成后会自动生成对应发行版、对应版本的原生默认配置,可选的可执行命令有两个,可根据实际发行版适配选择:
- 优先级最高的方案:
mc --nosubshell -c "exit",该命令会加载MC初始化逻辑生成配置后直接退出,不会进入交互界面,兼容性覆盖绝大多数MC 4.8+版本 - 兼容老版本的备选方案:
timeout 0.5s mc,给MC进程设置极短的超时时间,初始化逻辑执行完成后进程直接被终止,同样可以生成配置
- 优先级最高的方案:
- 配置生成的目标路径和运行用户绑定,默认路径为
~/.config/mc/ini,部分老版本MC路径为~/.mc/ini,可以直接通过目标路径是否存在做幂等判断,避免重复执行
完整Ansible任务示例
# 定义变量:需要生成MC配置的目标用户 vars: target_user: "your_user" tasks: - name: 安装Midnight Commander package: name: mc state: present - name: 触发MC生成原生默认配置 command: mc --nosubshell -c "exit" become: true become_user: "{{ target_user }}" args: # 配置文件已存在则跳过执行,保证任务幂等 creates: "~{{ target_user }}/.config/mc/ini" register: mc_init_result changed_when: mc_init_result.rc == 0 - name: 按需修改MC配置项示例(可选) ini_file: path: "~{{ target_user }}/.config/mc/ini" section: "Midnight-Commander" option: "skin" value: "gotar" owner: "{{ target_user }}" group: "{{ target_user }}" mode: '0644'
注意事项
如果使用的是老版本MC,只需要调整creates参数的路径为~{{ target_user }}/.mc/ini即可,其余逻辑无需变动。
内容的提问来源于stack exchange,提问作者Mystic
相关产品推荐
相关产品推荐

