以编程方式打开gnome终端并在执行bashrc后执行命令

时间:2010-10-09 16:29:26

标签: bash gnome gnome-terminal

我尝试构建一个小脚本来启动我的开发环境。对于该任务,我尝试打开一个带有几个选项卡的gnome终端,自动启动rails服务器和自动测试。 但是

gnome-terminal --tab -e "rails server" --tab --tab

不起作用(“创建子进程时出错”)。 还

gnome-terminal --tab -e "bash -c \"rails server\"" --tab --tab` 

不起作用。 有任何建议如何解决这个问题?

5 个答案:

答案 0 :(得分:13)

这是我们在Superuser

制定的一个很好的技巧
  1. eval "$BASH_POST_RC"

  2. 的末尾添加.bashrc
  3. 将每个选项卡的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"'

  4. @ Gilles:感谢您的解决方案!

答案 1 :(得分:1)

在黑暗中刺入:为要在选项卡中运行的每个命令创建shell脚本,使其可执行,并通过绝对路径调用它们,例如:把它放在/home/zardoz/bin/railsstart

#! /bin/sh
exec rails server

chmod +x它,然后执行

gnome-terminal --tab -e /home/zardoz/bin/railsstart --tab --tab ...

如果这不起作用,我要尝试的下一件事是在命令的开头粘贴strace -f -o /tmp/trace.log,让它失败,然后挖掘trace.log以找出实际的系统调用失败了,为什么(那里会有大量的垃圾 - 从后端读取并查找以E开头的全部大写代码短语,如“ENOEXEC”,“ENOENT”,“EPERM”等等。 )

编辑:以下是您在其中一个脚本中提取所有.bashrc设置的方法:

#! /bin/bash
. ~/.bashrc
exec rails server

警告:您可能需要调整.bashrc,以便它不会执行仅在“真正的”交互式shell会话中工作的某些事情。除非在rails启动之前遇到奇怪的错误,否则不要担心这一点。

答案 2 :(得分:0)

我假设出现错误,因为在gnome-terminal尝试运行rails时没有设置PATH。

为什么不使用rails服务器的完整路径,或者创建一个设置PATH变量的脚本?

答案 3 :(得分:0)

已经回复,但为了以防万一,请查看{K},OSX和Gnome桌面上自动化终端的this gem

答案 4 :(得分:0)

表示ubuntu 16.04

Ctr+Shift+T

这将在同一窗口中打开一个新选项卡。此外,最右侧标签旁边会显示一个用于添加更多标签的按钮。