使用 gnome-terminal 打开多个选项卡

Man*_*uel 17 gnome-terminal

我正在尝试创建一个命令,该命令将从 Rails 堆栈、rails s、spork 和 autotest 中打开 3 个服务。我可以通过打开 3 个终端,转到 app 文件夹并运行它们来单独运行这些命令。我什至可以打开 3 个新标签并在每个标签上运行命令。

问题是当我尝试通过 gnome-terminal 打开选项卡时它们失败了,如下所示:

gnome-terminal --tab --title="rails s" -e "rails s" --tab --title="spork" -e "spork" --tab --title="autotest" -e "autotest"
Run Code Online (Sandbox Code Playgroud)

错误(对于 spork 和自动测试):

There was an error creating the child process for this terminal
Failed to execute child process "spork" (No such file or directory)
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,它确实适用于“rails s”(该选项卡显示服务器正在运行)。

有任何想法吗?

小智 16

调用gnome-terminal3 次并将命令串在一起&& 不起作用,并且选项卡不会出现在同一个终端中,实际上您必须退出第一个终端才能出现下一个终端。

确保所有选项卡在一个实例中gnome-terminal同时打开的方法是使用--tab-with-profile=PROFILENAME开关。在下面的命令中,您可以保留第一个命令,gnome-terminal --tab因为它是要生成的第一个窗口;现在您需要知道的是您正在使用哪个配置文件,您可以使用它--tab-with-profile=YourProfile来调用其他命令,它们将同时出现在打开的原始终端中。

这是您修改的命令:

gnome-terminal --tab --title="rails s" -e "rails s" --tab-with-profile=Default --title="spork" -e "spork" --tab-with-profile=Default --title="autotest" -e "autotest"
Run Code Online (Sandbox Code Playgroud)

(对于未来的读者:替换后面给出的程序名称-e来测试这里给出的命令行;记住你的目标-e必须安装在$PATH;对于没有$PATH使用绝对路径的东西,例如,/opt/mike/program

请记住指定用于--tab-with-profile开关的实际配置文件。第一次调用gnome-terminalmust 使用--tab,其余所有调用--tab-with-profile。使用这种方法应该可以在同一个实例中打开大量选项卡gnome-terminal

通过右键单击找到您当前使用的gnome-terminal配置文件并查看配置文件,您当前使用的配置文件上会有一个标记:

在此处输入图片说明

转到配置文件首选项以获取更多信息并检查配置文件的名称。

有关更多信息,请参阅man gnome-terminalUbuntu 联机帮助页


注意

如果使用 启动程序时遇到问题gnome-terminal,请将位置添加到$PATH,或者创建符号链接并将其放置在某个$PATH位置,或者(这里非常有用):创建一个简单的 bash 包装器脚本并在gnome-terminal上面的命令行中调用它。(您必须使用绝对路径调用它:即/location/of/script而不仅仅是它的名称。)

举个例子:

gnome-terminal --tab --title="rails s" -e "rails s" --tab-with-profile=Default --title="spork" -e "spork" --tab-with-profile=Default --title="autotest" -e "autotest"
Run Code Online (Sandbox Code Playgroud)

然后命名脚本,使其可执行并在gnome-terminal上面的命令行中调用它。对所有有问题的非回购程序执行此操作。


gre*_*een 9

以下是来自stackoverflow.com的答案

  1. eval "$BASH_POST_RC"在 .bashrc 的末尾添加一个

  2. BASH_POST_RC每个选项卡的环境变量设置为您要执行的命令,例如: gnome-terminal --working-directory="/home/zardoz/projects/my_rails_app" --tab -e 'bash -c "export BASH_POST_RC=\"rails server\"; exec bash"' --tab -e 'bash -c "export BASH_POST_RC=\"autotest\"; exec bash"'