“konsole -e”导致只读终端

“konsole -e”导致只读终端

我正在尝试以编程方式打开一个新终端并自动运行一个自定义脚本,该脚本设置各种环境变量以启动交互式会话。这一切都工作正常,除了无法编辑生成的终端,即没有光标。我当前的尝试如下所示:

konsole -hold -e /path/to/bash/script/run_oenv.sh

看起来run_oenv.sh像这样(用于简单测试):

echo hello world
export FOO=bar

当运行上述命令run_oenv.sh成功执行时,我看到新终端中回显了预期的调试语句,但我只是不知道如何使新终端具有交互性。我缺少什么?

最终,bash 脚本要做的不仅仅是设置环境变量,但这是最简单的测试用例。

这是在 Centos 7/KDE 上。

答案1

当与终端仿真器一起使用-e来执行命令时,它会执行该命令反而它会启动的外壳。这意味着它会运行您的脚本,然后不会执行其他任何操作。

如果您想启动一个交互式bashshell 来获取您的文件,请使用bash--rcfile命令行选项:

konsole -hold -e bash --rcfile /path/to/bash/script/run_oenv.sh

请注意,这使得bash 不是读取~/.bashrc文件。如果您仍然想要 source ~/.bashrc,就像交互式 shell 会话中常见的那样,您可以从run_oenv.sh代码中执行此操作:

[ -f "$HOME/.bashrc" ] && source "$HOME/.bashrc"

或者没有短路语法,

if [ -f "$HOME/.bashrc" ]; then
    source "$HOME/.bashrc"
fi

(可能位于文件顶部,run_oenv.sh让您的文件覆盖 中的任何变量或设置~/.bashrc

相关内容