Llame a una función .bashrc desde un script de shell bash

Llame a una función .bashrc desde un script de shell bash

Quiero poder nombrar una pestaña de terminal para poder realizar un seguimiento de cuál es cuál. Encontré esta función (aquí) y ponerlo en mi .bashrc:

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

y ahora, cuando llamo, set-title my new tab nameel nombre de la pestaña cambia como se esperaba a "mi nuevo nombre de pestaña". El problema es que quiero abrir una nueva pestaña y nombrarla usando set-title. La forma en que he intentado hacer esto es así:

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

Sin embargo, ahora aparece el siguiente mensaje de error:

bash: set-title: command not found

Y creo que esto tiene que ver con que la nueva pestaña de gnome .bashrcaún no conoce la función.

¿Cómo puedo hacer que esto funcione?

Respuesta1

Al instante de usar la función, set-titlepuede crear un comando con esta funcionalidad, así que elimine la función set-title()que agrega ~/.bashrcy cree un archivo /usr/local/bin/set-title:

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

Agregue chmod: chmod +x /usr/local/bin/set-title. Y después de volver a abrir la terminal, puede usar este comando de la siguiente manera: set-title TEST(Si lo tiene /usr/local/bin/en su $PATH).

Y luego puedes usarlo al crear una nueva pestaña de esta manera:

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 de alguna manera no lo tiene /usr/local/bin/en su archivo $PATH, puede intentar con la ruta absoluta al comando set-title:

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

Respuesta2

Si desea que se ejecuten sus scripts de inicialización .bashrc, .bash_profile, .profile, etc., inicie gnome-terminal con --loginla opción.

información relacionada