Chama uma função .bashrc de um script de shell bash

4

Eu quero poder nomear uma guia de terminal para que eu possa acompanhar qual é qual. Eu encontrei esta função ( aqui ) e coloquei no meu .bashrc :

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

e agora, quando eu chamar set-title my new tab name , o nome da guia é alterado como esperado para "meu novo nome de guia". O problema é que eu quero abrir uma nova aba e nomeá-lo usando set-title . A maneira como tentei fazer isso é assim:

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

No entanto, agora recebo a seguinte mensagem de erro:

bash: set-title: command not found

E eu acho que isso tem a ver com a nova aba do gnome sem saber sobre a função .bashrc ainda.

Como posso fazer isso funcionar?

    
por Haych 03.11.2016 / 09:03

2 respostas

2

Instantâneo de usar a função set-title , você pode criar um comando com essa funcionalidade, portanto, remova a função set-title() que você adicionou de ~/.bashrc e crie um arquivo /usr/local/bin/set-title :

#!/bin/bash
echo -ne "3]0;$1
gnome-terminal --geometry=261x25-0+0 \
    --tab -e "bash -c 'set-title TAB1; sleep 10'" \
    --tab -e "bash -c 'set-title TAB2; sleep 10'"
7"

Adicione chmod: chmod +x /usr/local/bin/set-title . E depois de reabrir o terminal, você pode usar este comando: set-title TEST (Se você tem /usr/local/bin/ no seu $PATH ).

E então você pode usá-lo ao criar uma nova aba desta maneira:

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

Se você não tem /usr/local/bin/ no seu $PATH , você pode tentar com o caminho absoluto para o comando set-title:

#!/bin/bash
echo -ne "3]0;$1
gnome-terminal --geometry=261x25-0+0 \
    --tab -e "bash -c 'set-title TAB1; sleep 10'" \
    --tab -e "bash -c 'set-title TAB2; sleep 10'"
7"
    
por 03.11.2016 / 11:07
-1

Se você quiser que seus scripts de inicialização .bashrc, .bash_profile, .profile, etc sejam executados, inicie o gnome-terminal com a opção --login .

    
por 03.11.2016 / 13:11