Вопрос или проблема
Я хочу явно переименовать вкладку в 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'
Цель этого решения — заблокировать возможные изменения, происходящие от настроек окружения, обеспечивая тем самым стабильность имени вкладки.
Важные замечания
-
Платформенные различия: Обратите внимание, что поведение может варьироваться в зависимости от дистрибутива Linux, поскольку некоторые версии Bash могут иметь предустановленные конфигурации.
-
Конфликт с PS1: Будьте внимательны, некоторые конфигурации Bash могут переопределять название терминала также через переменную
PS1
. В этом случае вам может потребоваться редактировать эту переменную.
Заключение
Используя вышеописанные методы, вы можете добиться желаемого поведения при старте вкладок в gnome-terminal. Экспериментируйте с различными подходами, чтобы выбрать тот, что наилучшим образом подходит вашим потребностям. Удачи в ваших усилиях по автоматизации работы с терминалом!