Docker exec linux 终端创建别名

Docker exec linux terminal create alias

我有一个 运行 和分离容器。我想在附加到该容器之前在那里创建一个命令别名。

当我连接到容器并键入:

alias bar='foo'

别名已创建,可能由以下人员检查:

alias

命令。

但是如果我想通过 docker exec 命令来做同样的事情,即这样

docker exec -it <container-name> /bin/bash -c "alias bar='foo'"

它不起作用,可能是因为当我连接到容器并输入其终端时

/bin/bash -c "alias bar='foo'"

它也不行。

您知道如何修改 alias bar='foo' 以便它与应用于分离容器的 docker exec 命令一起工作吗?

alias 内置函数在当前 shell 中创建一个别名。别名与环境变量一样,不会持久化,只会加载。您需要更新 .bashrc 或容器内的任何内容以具有所需的别名,以便可以在 bash.

的每次启动时加载它

将类似
的内容添加到您的 Dockerfile 中 RUN echo alias bar='foo' >> ~/.bashrc
实际上,如果您 运行 您的容器在 root 以外的用户下,您需要将此命令放入正确的 .bashrc

你的bashrc文件中的别名不直接接受参数。尽管在您的情况下,您将必须创建一个函数并为其取别名。

您可以在 ~/.bashrc 中添加以下内容

dexec() {
    docker exec -it "" /bin/bash
    echo ""
}

您也可以使用 /bin/sh 代替 /bin/bash

别忘了做

source ~/.bashrc

理想情况下,你可以这样做

dexec <container_id/container_name>