Вызов функции .bashrc из скрипта оболочки bash

Вызов функции .bashrc из скрипта оболочки bash

Я хочу иметь возможность называть вкладки терминала, чтобы отслеживать, какая из них какая. Я нашел эту функцию (здесь) и поместите его в мой .bashrc:

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

и теперь, когда я вызываю set-title my new tab nameимя вкладки, как и ожидалось, меняется на "имя моей новой вкладки". Проблема в том, что я хочу открыть новую вкладку и назвать ее с помощью set-title. Я пытался сделать это следующим образом:

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

Однако теперь я получаю следующее сообщение об ошибке:

bash: set-title: command not found

И я думаю, это связано с тем, что новая вкладка gnome .bashrcпока не знает об этой функции.

Как мне это сделать?

решение1

Сразу после использования функции set-titleвы можете создать команду с этой функциональностью, поэтому удалите функцию set-title(), которую вы добавляете, ~/.bashrcи создайте файл /usr/local/bin/set-title:

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

Добавьте chmod: chmod +x /usr/local/bin/set-title. И после того, как вы снова откроете терминал, вы можете использовать эту команду: set-title TEST(если у вас есть /usr/local/bin/в вашем $PATH).

И затем вы можете использовать его при создании новой вкладки следующим образом:

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

Если у вас по какой-то причине его нет /usr/local/bin/в $PATH, вы можете попробовать указать абсолютный путь к команде set-title:

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

решение2

Если вы хотите, чтобы ваши скрипты инициализации .bashrc, .bash_profile, .profile и т. д. запускались, запустите gnome-terminal с --loginопцией.

Связанный контент