以编程方式打开gnome终端,并在bashrc执行后执行命令
我尝试构建一个小脚本来启动我的开发环境。为了这个任务,我尝试打开一个带有多个选项卡的gnome终端,其中自动启动rails server和autotest。 但以编程方式打开gnome终端,并在bashrc执行后执行命令
gnome-terminal --tab -e "rails server" --tab --tab
不起作用(“创建子进程时出错”)。 也
gnome-terminal --tab -e "bash -c \"rails server\"" --tab --tab`
不起作用。 任何建议如何解决这个问题?
这里是一个好的技巧,我们制定了在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:Thanks f或解决方案!
在黑暗中刺穿:为每个要在选项卡中运行的命令创建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会话中。不要担心这种情况,除非在导轨启动之前出现奇怪的错误。
我假设出现错误是因为在gnome-terminal尝试运行rails时没有设置PATH。
为什么不使用rails服务器的完整路径,或者创建一个设置PATH变量的脚本?
for Ubuntu 16。04
按Ctr+Shift+T
这将在同一个窗口中打开一个新的标签。此外,用于添加更多选项卡的按钮将出现在最右边的选项卡旁边。
尝试'-e'env BASH_POST_RC = \“rails server \”bash''获取较短的版本。对第二个'--tab -e'参数做同样的事情。 – 2014-10-10 16:03:04
我有一个类似的问题,并尝试了你的技术。有效。谢谢。我确实注意到,comnmand字符串不会被放入终端或历史记录中。有没有办法做到这一点? – Steve 2014-12-31 05:10:54
我尝试了几分钟的谷歌搜索。变量BASH_POST_RC是什么意思? – Steve 2014-12-31 05:11:36