Appelez une fonction .bashrc à partir d'un script shell bash

Je veux être en mesure de nommer un onglet terminal afin que je puisse savoir lequel est qui. J'ai trouvé cette fonction ( ici ) et l'ai mise dans mon .bashrc :

 function set-title() { if [[ -z "$ORIG" ]]; then ORIG=$PS1 fi TITLE="\[\e]2;$*\a\]" PS1=${ORIG}${TITLE} } 

et maintenant, lorsque j'appelle set-title my new tab name l'onglet est changé comme prévu pour "mon nouveau nom d'onglet". Le problème est que je veux ouvrir un nouvel onglet et le nommer en utilisant set-title . La façon dont j'ai essayé de le faire est comme ceci:

gnome-terminal --geometry=261x25-0+0 --tab -e "bash -c 'set-title tab1; sleep 10'" --tab -e "bash -c 'set-title tab2; sleep 10"

Cependant, maintenant, j'obtiens le message d'erreur suivant:

bash: set-title: command not found

Et je pense que cela a à voir avec le nouvel onglet gnome ne connaissant pas encore la fonction .bashrc .

Comment puis-je faire en sorte que cela fonctionne?

Pour utiliser la fonction set-title vous pouvez créer une command avec cette fonctionnalité. Supprimez donc la fonction set-title() que vous ajoutez à ~/.bashrc et créez un file /usr/local/bin/set-title :

 #!/bin/bash echo -ne "\033]0;$1\007" 

Ajoutez chmod: chmod +x /usr/local/bin/set-title . Et après avoir rouvert le terminal, vous pouvez utiliser cette command en: set-title TEST (Si vous avez /usr/local/bin/ dans votre $PATH ).

Et puis vous pouvez l'utiliser lors de la création d'un nouvel onglet de cette façon:

 gnome-terminal --geometry=261x25-0+0 \ --tab -e "bash -c 'set-title TAB1; sleep 10'" \ --tab -e "bash -c 'set-title TAB2; sleep 10'" 

Si vous n'avez pas /usr/local/bin/ dans votre $PATH , vous pouvez essayer avec le path absolu vers la command set-title:

 --tab -e "bash -c '/usr/local/bin/set-title TAB1; sleep 10'" 

Si vous voulez exécuter vos scripts .bashrc, .bash_profile, .profile, etc, lancez gnome-terminal avec l'option --login .