【问题标题】:Interactive Bash Shell (TTY) from Bash Function来自 Bash 函数的交互式 Bash Shell (TTY)
【发布时间】:2020-06-10 20:58:29
【问题描述】:

因此,我使用诸如docker exec -tdocker-compose exec $CONTAINER /bin/bashkubectl exec $POD_NAME -it /bin/bash 之类的命令来连接到具有 TTY 的实例,该 TTY 基本上从我的本地终端使用交互式 shell 实例。

我已经围绕这些或其他脚本构建了别名,但我现在有兴趣将它们变成函数。

所以以前,我可能有:

alias container=`...; docker-compose exec $CONTAINER /bin/bash;` 

其中... 是最后一条语句所需的任意其他 bash 命令集。这成功地接合了 shell。

现在,我有:

function container {
    ...
    docker-compose exec $CONTAINER /bin/bash
}

这似乎挂在一个循环中。我是了解 Linux/Unix 系统的初学者。有人可以解释一下: - 我如何在bash_profile 的多行函数中包含它而不是别名? - 当我执行这些命令时到底发生了什么?我知道别名只是一个存储值...这对这里的行为有何影响?

【问题讨论】:

    标签: bash docker shell kubernetes


    【解决方案1】:

    我不确定您在 ... 中有什么代码,这可能是导致错误的原因。
    但她我所做的一切都奏效了。

    这是我改变的:
    我使用docker 而不是docker-compose
    我添加了-it 标志。
    还添加了CONTAINER=$1 以获取容器名称作为参数。

    function container {                        
            CONTAINER=$1                        
            echo "Your code here"                     
            docker exec -it $CONTAINER /bin/bash
    }                                           
    

    只需将其放入 .bashrc.bash_profile 即可。
    据我了解,.bash_profile.bashrc 只是 shell 脚本,在您打开新 shell 时,它们会被引入当前会话。
    因此,您放入的任何函数都将可用,就像您在常规脚本中运行一样。

    您还可以在其中获取更多文件,以保持它们的整洁,并使您的自定义命令和函数更具可移植性。
    像这样:.bash_profile

    # dotfile dir is actually a git repo that i clone to any new machine i use.
    # And Add this line only to my .bash_profile
    if [ -f ~/dotfiles/.bash_customize ]; then
        . ~/dotfiles/.bash_customize
    fi
    

    【讨论】:

      猜你喜欢
      • 2013-04-16
      • 1970-01-01
      • 2017-05-23
      • 2022-01-05
      • 2019-03-19
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多