我正在尝试做的事情:
- 编写脚本以打开 3 个选项卡。
cd
进入每个选项卡中的不同文件夹(即:运行唯一命令)。PS1
通过修改其局部变量使每个选项卡具有唯一的标题- 确保每个选项卡在脚本运行后保持打开状态
我想要这个脚本,所以我可以单击我的桌面上的脚本并让它打开终端,因为我想要我的日常开发环境。
描述:
我有这个脚本来尝试打开 3 个终端选项卡,其中包含要在选项卡中运行的独特命令:
open_tabs.sh
#!/bin/bash
gnome-terminal --tab -- bash -ic "set-title title 1; exec bash"
gnome-terminal --tab -- bash -ic "cd ~; set-title title 2; exec bash"
gnome-terminal --tab
当我使用 运行它时./open_tabs.sh
,它会打开 3 个新标签,但不幸set-title
的是无法设置标签标题!看来这个PS1
变量并没有随着我的set-title
调用而保持不变。根据此答案和其下方的评论exec bash
,可以使标签保持打开状态。
我已经set-title
定义为这样的函数~/.bashrc
。它的目的是在任何终端窗口的顶部设置标题字符串。当我手动使用它时它工作得很好。例如:set-title hey how are you?
会放“嘿,你好吗?” 在我的终端窗口的顶部。
# From: https://unix.stackexchange.com/questions/177572/how-to-rename-terminal-tab-title-in-gnome-terminal/566383#566383
set-title() {
# If the length of string stored in variable `PS1_BAK` is zero...
# - See `man test` to know that `-z` means "the length of STRING is zero"
if [[ -z "$PS1_BAK" ]]; then
# Back up your current Bash Prompt String 1 (`PS1`) into a global backup variable `PS1_BAK`
PS1_BAK=$PS1
fi
# Set the title escape sequence string with this format: `\[\e]2;new title\a\]`
# - See: https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Customizing_the_terminal_window_title
TITLE="\[\e]2;$@\a\]"
# Now append the escaped title string to the end of your original `PS1` string (`PS1_BAK`), and set your
# new `PS1` string to this new value
PS1=${PS1_BAK}${TITLE}
}
我该如何解决这个问题,以便每个选项卡运行一个命令,通过修改其PS1
变量来设置其标题,并保持打开状态?
请注意,gnome-terminal
已弃用其--title
和--command
选项,因此这些变通方法。
有关的:
- bash:在打开 gnome-terminal 选项卡时在 `bash -c` 命令中调用 ~/.bashrc 文件中定义的函数时出现“找不到命令”
- https://unix.stackexchange.com/questions/177572/how-to-rename-terminal-tab-title-in-gnome-terminal/566383#566383
使用多个选项卡打开终端并执行应用程序<== 这是我真正想要解决
gnome-terminal
的问题,但现在不推荐使用--command
( ) 选项!-e
# Option “--command” is deprecated and might be removed in a later version of gnome-terminal. # Use “-- ” to terminate the options and put the command line to execute after it.
与大多数编程一样,解决问题非常困难。我不得不研究一堆关于 Bash 变量的知识,以及如何使用
export
andsource
(或 POSIX 点运算符,.
),以及 bash 如何加载,以及交互式-i
bash 模式是什么等等。我发现
man bash
并且man test
也很有用。这是我想做的事情的方法,即:1st,将其添加到
~/.bashrc
文件的底部:2,创建这个脚本来打开 3 个独特的选项卡,其中包含 3 个独特的 cd 命令和 3 个独特的标题:
open_tabs.sh:
现在打开一个终端并运行
open_tabs.sh
脚本:瞧!太神奇了!这 3 个新选项卡现在显示在我的终端顶部,每个选项卡都执行了
cd
我设置的正确命令,并且每个选项卡都有我设置的正确标题!这将全部放入我的 dotfiles 项目中:https ://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles 。
完整和最终解决方案:请参见此处:使用多个选项卡打开终端并执行应用程序
我认为你应该使用
&
让你的进程在后台运行。https://www.tecmint.com/run-linux-command-process-in-background-detach-process/