我需要打开多个终端选项卡,给它们命名,转到一个目录,并使每个选项卡运行一个命令。
我是 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
Run Code Online (Sandbox Code Playgroud)
它打开选项卡,命名它们,但无法执行生成此错误的命令:
为此终端创建子进程时出错
另一个缺点是,如果我停止运行命令,它会关闭选项卡,这是我不想要的。我需要能够停止命令并在同一选项卡中再次运行它。
脚本有什么问题?有没有另一种更简单的方法来做到这一点?
注意:如果我从命令中删除 (-e "\"bash -c ${cmds[i]} ;bash\"") 部分,它会打开给定目录中的选项卡并命名它们,没有错误。
在应用下面的@Tuknutx 答案并编辑脚本后,错误不再出现,但它给了我bash: rails c: command not found并rails s创建了一个新的 rails 应用程序而不是启动 rails 服务器,一旦访问此文件夹,我将使用 .rmvrc 选择一个 gemset .