【问题标题】:Bash, execute command but continue with interactive sessionBash,执行命令但继续交互式会话
【发布时间】:2011-01-03 13:16:26
【问题描述】:

我想为 pagsh 创建一个别名,它会立即让我获得管理员 kerberos 票证。

问题是我不知道如何为bash 指定一个命令来运行,但在命令完成后仍然继续交互式会话。

我目前的拍摄是:

alias admin=pagsh -c "bash -c \"kinit xtoth1@ADMIN.META\""

bash 逻辑上在kinit 完成后立即结束。如何将自定义命令推送到 bash 的交互式会话中?我仍然需要正常运行.bashrc,因此我不能使用--rcfile

【问题讨论】:

    标签: linux bash unix shell kerberos


    【解决方案1】:

    我的建议是使用带有 --rcfile 的自定义 bashrc 文件来获取您的 .bashrc,例如:

    alias admin=pagsh -c "bash --rcfile myrc"

    myrc

    source ~/.bashrc
    kinit xtoth1@ADMIN.META
    

    【讨论】:

    • 我认为它应该是alias admin=pagsh -c "bash --rcfile myrc" 即。 bash 而不是 bashrc
    【解决方案2】:

    如果您只需要一两行,您可以使用“Process Substitution”[1] 的酷炫 bash 功能在调用行上提供它。例如(在特定的 python virtualenv 中运行 bash):

    bash --rcfile <(echo '. ./pyvenv/bin/activate')
    

    多行不是问题,使用 vars 或 helpers 也不是问题:

    bash --rcfile <(echo echo "Starting at `date`"; echo cd $HOME)
    

    [1] man bash 并查找“进程替换”。请注意,并非所有系统都支持此功能,但它应该适用于所有 Linux。

    【讨论】:

      【解决方案3】:

      关注呢?

      alias admin='pagsh -c "bash -c \"kinit xtoth1@ADMIN.META; exec bash\""'
      

      甚至

      alias admin='pagsh -c "kinit xtoth1@ADMIN.META; exec bash"'
      

      可能会奏效。 (我没有可用的 openafs 环境来正确测试它。)

      【讨论】:

        猜你喜欢
        • 2021-11-14
        • 1970-01-01
        • 2011-11-25
        • 1970-01-01
        • 1970-01-01
        • 2014-02-23
        • 2012-10-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多