【问题标题】:Docker exec linux terminal create aliasDocker exec linux终端创建别名
【发布时间】:2019-06-15 07:04:04
【问题描述】:

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

当我连接到容器并输入:

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 命令一起使用吗?

【问题讨论】:

    标签: bash docker terminal exec alias


    【解决方案1】:

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

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

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

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

    别忘了做

    source ~/.bashrc
    

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

    dexec <container_id/container_name>
    

    【讨论】:

      【解决方案2】:

      alias 内置函数在当前 shell 中创建一个别名。别名,如环境变量,不会持久化,只会加载。您需要更新您的 .bashrc 或容器内的任何内容以获得所需的别名,以便可以在每次 bash 启动时加载它。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-09-08
          • 2014-02-04
          • 2012-11-15
          • 1970-01-01
          • 2021-08-22
          • 2020-06-08
          • 2015-07-12
          • 2014-03-17
          相关资源
          最近更新 更多