我需要打开多个终端选项卡,给它们标题,进入目录,并使每个选项卡运行一个命令。
我是Linux和Shell脚本的新手,在在线搜索并检查了一些解决方案后,我制作了此脚本(根据以下答案进行编辑):
#!/bin/bash
cd /media/Extra/Project
tab=" --tab-with-profile=Default"
options=(--tab --title=Terminal)
cmds[1]="'rails s'"
titles[1]="Server"
cmds[2]="'rails c'"
titles[2]="Console"
for i in 1 2; do
options+=($tab --title="${titles[i]}" -e "bash -c \"${cmds[i]} ; bash\"" )
done
gnome-terminal "${options[@]}"
exit 0
它打开选项卡,为其命名,但无法执行生成此错误的命令:
为该终端创建子进程时出错
另一个缺点是,如果我停止了正在运行的命令,它将关闭选项卡,而这是我不希望的。我需要能够停止命令并在同一选项卡中再次运行它。
脚本有什么问题?还有另一种更简单的方法吗?
注意:如果从命令中删除了(-e“ \” bash -c $ {cmds [i]}; bash \“”)部分,它将打开给定目录中的选项卡并命名它们,没有错误。
-编辑1:
应用@Tuknutx回答下面和编辑脚本后,错误不会出现了,但它给了我bash: rails c: command not found
和rails s
一旦该文件夹被访问创建一个新的Rails应用程序启动轨服务器而不是,我使用.rmvrc选择宝石。
cmds[1]="'ping 192.168.9.9'"
它给我同样的错误,但我通过删除单引号解决了它。所以,如果我写cmds[1]="ping 192.168.9.9"
它的作品。
tab=" --tab-with-profile=Default"
??