Terminator - 执行脚本并保持命令提示符处于活动状态

Terminator - 执行脚本并保持命令提示符处于活动状态

我在 Ubuntu 上安装了 Terminator,并保存了自己的布局,其中包含 5 个终端窗口。现在我想在每个窗口中执行一个 shell 脚本。问题是,当脚本终止时,终端窗口变得毫无用处,因为没有命令提示符了。例如,我可以保存我的布局并在布局配置中输入命令“top”。下次启动 Terminator“terminator -m -l mylayout &”时,它将打开我的布局,在相应的子终端中执行命令“top”,但如果我按“q”退出“top”,该终端将不再有命令提示符。有办法修复它吗?还有,有没有办法从单独的 gnome-terminal 窗口将命令传递到 Terminator 布局内的终端窗口?

答案1

我还想通过执行脚本然后启动 bash shell 来启动 Terminator 会话。我这样做了:

在 Terminator 的偏好设置中,在‘布局’选项卡上,在左侧选择所需的布局,然后在右侧选择所需的终端。

在“自定义命令”字段中,输入命令,然后输入&& bash || bash。无论命令/脚本是否成功,这都会启动一个新的 bash shell。

afterbash&&在成功退出代码 (0) 后执行。afterbash||在错误退出代码 (1-255) 后执行。

示例:要执行top然后退出到新的 bash shell,请在“自定义命令”字段中输入此命令。

top && bash || bash

另一个例子:假设你需要一些鼓励来让新的一天有一个好的开始。

echo -e "\nWelcome! You are going to have a productive day!\n" && bash || bash

然后,要运行指定的命令,请使用-l选项和布局名称启动终止符。

terminator -l mylayout

答案2

您可以使用自定义配置文件来让终端在命令退出后保持打开状态。请参阅首选项中的配置文件、命令选项卡。您可以让它们保持打开状态直到您明确关闭它们,也可以让它们重新启动命令(bash 或自定义命令)。

我最近学到的另一个技巧是使用以下内容作为自定义命令:

bash --rcfile <(echo ". ~/.bashrc && ls -l")

它启动 bash,执行命令 (ls),然后进入同一个 bash 进程。这比在命令末尾添加 bash 的做法略胜一筹。

答案3

我知道这是一个老问题,但我今天花了一些时间试图弄清楚,但这些都对我不起作用。我偶然发现了这篇博文这正是我所需要的。所以我想我应该分享一下。

基本上,你将这段代码添加到你的.zshrc.bashrc

echo $INIT_CMD
if [ ! -z "$INIT_CMD" ]; then
    OLD_IFS=$IFS
    setopt shwordsplit
    IFS=';'
    for cmd in $INIT_CMD; do
        print -s "$cmd"  # add to history
        eval $cmd
    done
    unset INIT_CMD
    IFS=$OLD_IFS
fi

然后将其设置为您的自定义命令:

env INIT_CMD="cd bla; export PYTHONPATH=/tmp; workon project" zsh

Ctrl这样您就可以将多个命令串在一起,然后当您用+结束持久命令时,C终端保持打开状态。

相关内容