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

基于ubuntu:22.04的Docker镜像用户创建:bash与dash兼容问题咨询

问题解答

1. 可以用bash执行指定命令,同时保留dash为默认shell

直接在RUN指令里显式调用bash来执行你的命令即可,这样系统默认shell仍为dash,仅当前RUN命令用bash解析执行。修改后的命令如下:

RUN bash -c 'export MUNGEUSER=1001 && id -u munge &>/dev/null || useradd -m -c "MUNGE Uid '\''N'\'' Gid Emporium" -d /var/lib/munge -u $MUNGEUSER -g munge -s /sbin/nologin munge'

这里用单引号包裹bash命令内容,避免Dockerfile的变量解析冲突,同时处理好原命令里的单引号转义。

2. 需要改写&>/dev/null以兼容dash

&>/dev/null是bash的扩展语法,dash作为POSIX标准shell不支持这种写法。要兼容dash,需改为POSIX标准的重定向格式:> /dev/null 2>&1。

如果不想依赖bash,直接用dash执行的话,修改后的命令如下:

RUN export MUNGEUSER=1001 && id -u munge > /dev/null 2>&1 || useradd -m -c "MUNGE Uid 'N' Gid Emporium" -d /var/lib/munge -u $MUNGEUSER -g munge -s /sbin/nologin munge

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:06:18