1

Я хотел бы использовать значение переменной, заданной в моей оболочке zsh, для отображения в строке приглашения.

Например, допустим, export TOKEN='hello' установлен в моем сеансе. В это время я загружаю приглашение, которое содержит "$TOKEN" .

Это отлично работает, и приглашение отображается правильно. Однако, если я изменю значение TOKEN, мое приглашение не будет обновлено.

Как заставить zsh обновлять мое приглашение каждый раз, когда я выполняю команду?

1 ответ1

2

Есть несколько способов сделать это. Вы должны посмотреть на функции precmd и preexec . Они находятся в разделе hook functions zshmisc (который вы можете прочитать онлайн или используя man zshmisc .

Простым решением было бы прочитать этот вопрос unix.stackexchange.com , в котором говорится, что вы должны поместить его в файл ~/.zshrc :

 setopt prompt_subst
 PROMPT='$TOKEN'

Это будет делать то, что вы хотите:

 ┌─(simont@charmander:s000)─────────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── export GREETING="foo"                                 ──(Wed,Dec12)─┘
 foo ┌─(simont@charmander:s000)─────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── export GREETING="bar"                                 ──(Wed,Dec12)─┘
 bar ┌─(simont@charmander:s000)─────────────────────────────────▸▸▸▸▸▸▸▸▸▸─(~  )─┐
 └─(12:44)── 

(Это немного портит мою подсказку, но вы можете видеть, что foo и bar отображаются правильно, как они должны обновляться при изменении $GREETING . В вашем случае используйте $TOKEN).

Моя подсказка сильно заимствует у Фила!ZSH Prompt, который я нашел очень полезным, когда учился настраивать мой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .