Docker exec Linux终端创建别名

时间:2019-01-21 20:52:40

标签: bash docker terminal exec 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命令一起工作吗?

3 个答案:

答案 0 :(得分:1)

内置alias会在当前shell中创建一个别名。别名(如环境变量)不会持久保存,只能加载。您需要更新.bashrc或容器内部的任何内容,以具有所需的别名,以便可以在bash的每次启动时将其加载。

答案 1 :(得分:1)

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

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

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

别忘了做

source ~/.bashrc

理想情况下,您可以执行以下操作

dexec <container_id>

答案 2 :(得分:0)

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