如何在ubuntu中启动bash shell – 改变目录,打开制表符,运行命令

我相信这不应该像我find它一样辛苦!

当我login到我的机器时,我希望它启动一个bash shell,在一个给定的目录中,打开并命名一些标签,并在每一个启动一个进程。

我想如果我放

cd ~/xxx/xxx/xxx 

在.bashrc中,然后用类似的东西自动启动bash shell

 gnome-terminal --tab -e "bash -c 'rails s'" --tab -e "bash -c 'spork'" --tab -e "bash -c 'autotest'" --tab -e "bash -c 'rails c'" --tab -e 'tail -f log/development.log' 

它应该工作

它不 – 我得到“有一个错误,为这个terminal创buildsubprocess无法执行subprocess的'轨'(没有这样的文件…

轨道是在path中 – 无论是在根目录和目的地的目录,并给出完整的path没有帮助 – terminal窗口不打开。

更新:这不能按预期工作的原因是,直到执行启动进程的命令,bashrc不会改变工作目录。 (我可以看到,如果我做标签-e'密码')

所以问题是,我怎样才能改变目录,然后开始运行的进程?

有一个非常好的解决scheme:

https://stackoverflow.com/questions/3896882/open-gnome-terminal-programmatically-and-execute-commands-after-bashrc-was-execut

从链接引用:

这是我们在超级用户制定的一个很好的技巧

  1. 在你的.bashrc的结尾添加一个评估“$ BASH_POST_RC”

  2. 设置每个标签的BASH_POST_RC环境variables为你喜欢执行的命令,例如: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:感谢您的解决scheme!

我用这个想法创build了下面的bash脚本。

gnome-terminal –working-directory =“/ home / USER / rails_projects / PROJECT ”–tab –title = Terminal –profile = Rails –tab –profile = Rails –title = Console -e'bash – c“export BASH_POST_RC = \”rails console \“; exec bash”'–tab –profile = Rails –title = Guard -e'bash -c“export BASH_POST_RC = \”guard \“; exec bash”' – -tab –profile = Rails –title = Server -e'bash -c“export BASH_POST_RC = \”rails server \“; exec bash”'–tab –profile = Rails –title = Tail -e'bash -c“export BASH_POST_RC = \”tail -f log / development.log \“; exec bash”'

使用-c参数调用bash时,不会调用.bashrc

相反,你可以打包调用gnome-terminal的脚本,首先做cd 。 有些像这样:

 #!/bin/bash cd ~/xxx/xxx/xxx gnome-terminal --tab -e "bash -c 'rails s'" --tab -e "bash -c 'spork'" --tab -e "bash -c 'autotest'" --tab -e "bash -c 'rails c'" --tab -e 'tail -f log/development.log'