Как переименовать окно с помощью команды подсказки в iTerm2? - PullRequest
0 голосов
/ 21 января 2019

Я хочу открыть сеанс терминала в iTerm2 и отправить текст, чтобы переименовать заголовок окна в «Блокнот Jupyter», а затем открыть блокнот Jupyter:

export PROMPT_COMMAND='echo -ne "\033]0;Jupyter Notebook\007"';  VAR="jupyter notebook"; $VAR

Однако указанные выше команды сначала откроют Блокнот Jupyter, а , а затем переименуют заголовок терминала в «Блокнот Jupyter» после Я прерываю сеанс ноутбука с помощью CMD-C.

Как переименовать заголовок окна перед открытием сеанса ноутбука?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Решено путем создания другой переменной среды:

TITLE='echo -ne "\033]0;Jupyter Notebook\007"'; $TITLE; VAR="jupyter notebook"; $VAR

Но я до сих пор не понимаю поведение bash.Если я пытаюсь установить заголовок перед запуском, скажем, оболочки Apache Spark, то bash игнорирует команду echo и должным образом запускает оболочку Spark:

echo -ne "\033]0;Apache Spark\007"; spark-shell
Last login: Tue Jan 22 11:54:15 on ttys001
MacBook:directory user$ 'echo -ne "\033]0;Apache Spark\007"'; spark-shell
2019-01-22 12:25:25 WARN  NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Setting default log level to "WARN".

Очевидно, что команды, которые следуют после команды echo, могутпереопределить эхо.Если бы кто-то мог объяснить это поведение, я был бы очень признателен.

0 голосов
/ 21 января 2019

Не делайте этого с PROMPT_COMMAND.Он предназначен только для обновления приглашения или заголовка окна, чтобы выбрать изменения, которые были сделаны во время предыдущей команды, например cd.Он не выполняется до тех пор, пока команда не завершится, и оболочка не собирается напечатать следующее приглашение - поэтому в имени указано PROMPT.

Используйте псевдоним или функцию для обновления заголовка и запуска команды:

alias jnb='echo -ne "\033]0;Jupyter Notebook\007"; jupiter notebook'
...