Ce que j'essaie de faire :
- Ecrivez un script pour ouvrir 3 onglets.
-
cd
dans un dossier différent dans chaque onglet (c'est-à-dire : exécuter une commande unique). - faire en sorte que chaque onglet ait un titre unique en modifiant son titre local
PS1
variable - S'assurer que chaque onglet reste ouvert après l'exécution du script.
Je veux que ce script soit programmé pour que je puisse cliquer sur le script sur mon bureau et qu'il ouvre les terminaux comme je le voudrais pour mon environnement de développement quotidien.
Description :
J'ai ce script pour essayer d'ouvrir 3 onglets de terminal avec des commandes uniques à exécuter dans les onglets :
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
Lorsque je l'exécute avec ./open_tabs.sh
il ouvre 3 nouveaux onglets, mais malheureusement set-title
ne fonctionne pas pour définir le titre de l'onglet ! Il apparaît que le PS1
ne reste pas en place avec mon set-title
appel. Le site exec bash
est là pour garder l'onglet ouvert, par cette réponse et les commentaires en dessous .
J'ai set-title
définie comme une fonction dans ~/.bashrc
comme ça. Son but est de définir la chaîne de titre en haut de toute fenêtre de terminal. Il fonctionne parfaitement lorsque je l'utilise manuellement. Ex : set-title hey how are you?
mettra "hey how are you ?" en haut de ma fenêtre de terminal.
# 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}
}
Comment puis-je résoudre ce problème pour que chaque onglet exécute une commande, définisse son titre en modifiant sa section PS1
variable, et reste ouvert ?
Notez que gnome-terminal
a rendu obsolète son --title
y --command
d'où ces solutions de contournement.
En rapport :
-
Ouvrir le terminal avec plusieurs onglets et exécuter l'application <== c'est ce que j'essaie vraiment de résoudre, mais
gnome-terminal
's--command
(-e
) est désormais obsolète !# 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.