我尝试构建一个小脚本来启动我的开发环境。对于该任务,我尝试打开一个带有几个选项卡的gnome终端,自动启动rails服务器和自动测试。 但是
gnome-terminal --tab -e "rails server" --tab --tab
不起作用(“创建子进程时出错”)。 还
gnome-terminal --tab -e "bash -c \"rails server\"" --tab --tab`
不起作用。 有任何建议如何解决这个问题?
答案 0 :(得分:13)
这是我们在Superuser
制定的一个很好的技巧在eval "$BASH_POST_RC"
.bashrc
将每个选项卡的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"'
@ 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
这将在同一窗口中打开一个新选项卡。此外,最右侧标签旁边会显示一个用于添加更多标签的按钮。