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


16

我正在尝试创建一个命令,该命令将从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"

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

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

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

有任何想法吗?

Answers:


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"'


15

调用gnome-terminal三次并将命令与一起使用&& 将无法正常工作,并且选项卡将不会出现在同一终端中,实际上,您必须退出第一个终端才能显示下一个终端。

确保在同一实例中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"

(对于将来的读者:替换之后给出的程序名称,-e以测试此处给出的命令行;记住-e必须安装目标并安装在其中$PATH;对于未$PATH使用的东西,请使用绝对路径,例如/opt/mike/program

切记指定用于--tab-with-profile交换机的实际配置文件。第一次调用gnome-terminal必须使用--tab,其余全部使用--tab-with-profile。使用这种方法,应该有可能在的同一实例中打开大量标签gnome-terminal

右键单击gnome-terminal并找到配置文件,找到您当前正在使用的配置文件,您当前正在使用的配置文件上将有一个标记:

在此处输入图片说明

转到“个人档案”首选项以获取更多信息,并检查个人档案的名称。

有关更多信息,请参见man gnome-terminal在线Ubuntu联机帮助页


注意事项

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

举个例子:

#!/bin/bash
cd $HOME/.rvm/gems/ruby-2.0.0-p0/bin 
spork
exit 0

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


我怎么知道个人资料?(我尝试使用Default,我的用户名和〜/ .profile)
Manuel

它说是Default,但是我使用--tab-with-profile = Default遇到了同样的错误
Manuel

@Manuel另一种可能性是目标命令不在您的命令中$PATH;使用spork绝对路径指定命令的位置以及其他命令。

我使用的命令是gnome-terminal --tab --title =“ rails s” -e“ rails s” --tab-with-profile = Default --title =“ spork” -e“ spork”- tab-with-profile =默认--title =“ autotest” -e“ autotest”(从答案中复制/粘贴)。关于$ PATH,如果这是问题所在,那么为什么它在通过菜单打开的选项卡上起作用?
曼努埃尔

@Manuel正如您在问题中所说的,您必须转到“应用程序文件夹”并从那里运行它们,这意味着它们不在其中$PATH。答案中的方法是我用来在同一gnome-terminal窗口的不同选项卡中启动所有已安装存储库的命令行程序的方法,它始终有效,因为其他程序位于$ PATH中。

0

gnome-terminal --tab -- sh -c "python3 'test.py' ; bash"

此代码在运行python脚本的终端中打开新选项卡,当结束时,此新选项卡将不会关闭,因为我在此代码末尾添加了“ bash” ...

如果需要多次,则将其放入bash脚本的while循环中

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.