Как явно задать имя вкладки нового gnome-terminal?

Вопрос или проблема

Я хочу явно переименовать вкладку в gnome-terminal при запуске вкладки. Я не хочу использовать флаг gnome-terminal –title, так как он сбрасывается моим файлом bashrc после выполнения всего, что должно быть выполнено.

Я успешно использовал эту команду в обычном терминале

export PROMPT_COMMAND="echo -ne '\033]0;TABNAME\007'"

Эта команда хорошо работает для переименования имени текущей вкладки, но когда я пытаюсь использовать ее в сочетании с командой выполнения gnome-terminal, я не получаю правильный вывод.

Я использовал флаг gnome-terminal –e для выполнения простых команд с успехом, что-то вроде этого откроет новый терминал и выведет hey, а затем вернется к bash

gnome-terminal -e "bash -c 'echo hey';bash"

Вот что я пытаюсь сделать обратите внимание на экранированные ” ” кавычки, которые я добавил

TABNAME="export PROMPT_COMMAND=\"echo -ne '\033]0;TABNAME\007'\""
gnome-terminal --tab --e "bash -c $TABNAME;bash"

Я всегда получаю странный вывод, независимо от того, как я изменяю кавычки, но я думаю, что именно в этом и заключается проблема.

Попробуйте:

gnome-terminal --tab -- sh -c 'printf "\e]0;TABNAME\a"; exec "${SHELL:-bash}"'

Если вы хотите запустить ваш $SHELL после установки заголовка вкладки на TABNAME, или:

gnome-terminal --tab -- env 'PROMPT_COMMAND=printf "\e]0;TABNAME\a"' bash

Если вы хотите запустить bash с PROMPT_COMMAND=printf "\e]0;TABNAME\a" в его окружении.

Или в совокупности, на случай если ~/.bashrc или другой файл, который загружается bash, переопределяет $PROMPT_COMMAND на что-то другое:

gnome-terminal --tab -- env 'PROMPT_COMMAND=printf "\e]0;TABNAME\a"' sh -c '
   eval "$PROMPT_COMMAND"
   exec bash'

Для произвольного имени вкладки, будет лучше написать это:

gnome-terminal --tab -- env TABNAME='$$$`fancy tab name`$$$' \
                            PROMPT_COMMAND='printf "\e]0;$TABNAME\a"' sh -c '
   eval "$PROMPT_COMMAND"
   exec bash'

Чтобы избежать необходимости расширять потенциально проблемное имя вкладки в что-то, что будет интерпретировано как код оболочки.

Остерегайтесь, некоторые операционные системы поставляются с конфигурацией bash по умолчанию, которая также устанавливает заголовок терминала через переменную $PS1.

Ответ или решение

Чтобы явно установить имя вкладки в gnome-terminal при ее старте, можно использовать несколько подходов, которые позволяют избежать автоматического переименования, происходящего из-за настроек в файле .bashrc. Ниже приведены несколько методов, как вы можете это сделать.

Способ 1: Установка переменной PROMPT_COMMAND

Вы можете использовать переменную PROMPT_COMMAND, чтобы задать имя вкладки. Это можно сделать следующим образом:

gnome-terminal --tab --env 'PROMPT_COMMAND=printf "\e]0;TABNAME\a"' bash

Здесь замените TABNAME на желаемое имя вкладки. В этом случае, когда откроется новая вкладка, имя будет установлено в указанный вами текст.

Способ 2: Использование команды printf

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

gnome-terminal --tab -- sh -c 'printf "\e]0;TABNAME\a"; exec bash'

Также, замените TABNAME на свое уникальное имя вкладки. После выполнения этой команды имя вкладки будет установлено и вы сможете продолжить работу в bash.

Способ 3: Объединение подходов

Если вы хотите избежать влияния файла .bashrc, вы можете объединить несколько указанных выше подходов. Например, следующим образом:

gnome-terminal --tab -- env TAPNAME='My Custom Tab' \
                     PROMPT_COMMAND='printf "\e]0;$TABNAME\a"' sh -c '
   eval "$PROMPT_COMMAND"
   exec bash'

Цель этого решения — заблокировать возможные изменения, происходящие от настроек окружения, обеспечивая тем самым стабильность имени вкладки.

Важные замечания

  1. Платформенные различия: Обратите внимание, что поведение может варьироваться в зависимости от дистрибутива Linux, поскольку некоторые версии Bash могут иметь предустановленные конфигурации.

  2. Конфликт с PS1: Будьте внимательны, некоторые конфигурации Bash могут переопределять название терминала также через переменную PS1. В этом случае вам может потребоваться редактировать эту переменную.

Заключение

Используя вышеописанные методы, вы можете добиться желаемого поведения при старте вкладок в gnome-terminal. Экспериментируйте с различными подходами, чтобы выбрать тот, что наилучшим образом подходит вашим потребностям. Удачи в ваших усилиях по автоматизации работы с терминалом!

Оцените материал
Добавить комментарий

Капча загружается...