别名是 shell 的一个特性,而 docker exec 是在容器中运行一个命令,它并不会创建一个新的 shell 进程。因此,别名在 docker exec 中不起作用。要解决这个问题,可以将要使用的别名写入 shell 配置文件中(例如 .bashrc 或 .zshrc),然后在容器中使用 docker exec 运行所需命令。例如,以使用别名“ls”为例:
在主机上编辑您的 shell 配置文件。例如,对于 bash Shell,打开 .bashrc 文件并添加以下行:
alias ls='ls --color=auto'
将更改保存后,重新加载 shell 配置文件,使别名生效:
source ~/.bashrc
然后,在需要使用别名“ls”的容器中,使用 docker exec 运行所需命令,并附加要运行的 shell 命令。例如:
docker exec my-container bash -c "ls"
注意:本解决方法只对具有交互式 shell 的容器有用。如果容器没有交互式 shell,则必须将别名写入容器中每个要使用它的命令中。例如:
docker exec my-container bash -c "alias ls='ls --color=auto'; ls"
上一篇:别名目录减一个文件
下一篇:别名声明中的依赖限定名称