1

Я хотел бы указать имя моего Python virtualenv в моей подсказке ZSH, но я не могу заставить его работать. Он указан в качестве переменной среды (VIRTUAL_ENV). Я установил другой скрипт, который правильно возвращает только базовое имя моего виртуального env (envTest), но попытка включить это в мое приглашение тоже не сработало.

Подскажите конфиг:

PROMPT="╭─${user_host} ${current_dir} [${VIRTUAL_ENV}] ${rvm_ruby} ${git_branch}
╰─%B${user_symbol}%b "

Приставка:

╭─user@server ~/Projects/virtualenvTest []
╰─$ echo $VIRTUAL_ENV

╭─user@server ~/Projects/virtualenvTest []
╰─$ source envTest/bin/activate
╭─user@server ~/Projects/virtualenvTest []
╰─$ echo $VIRTUAL_ENV
/home/user/Projects/virtualenvTest/envTest

Я могу получить другие переменные окружения для отображения в моем приглашении (например, LANG).

Подскажите конфиг:

PROMPT="╭─${user_host} ${current_dir} [${LANG}] ${rvm_ruby} ${git_branch}
╰─%B${user_symbol}%b "

Приставка:

╭─user@server ~/Projects/virtualenvTest [en_US.UTF-8]
╰─$ echo $LANG
en_US.UTF-8

1 ответ1

1

Если вы на самом деле используете двойные кавычки при определении вашего PROMPT тогда все параметры в нем подставляются при определении, а не каждый раз, когда выводится приглашение. Вы можете предотвратить это, указав $VIRTUAL_ENV другому.

Как положить всю строку внутри одинарные кавычки , чтобы предотвратить замену $VIRTUAL_ENV , вероятно , будет нарушать остальные подсказки, попробуйте процитировать только $ предваряя \ как это

PROMPT="╭─${user_host} ${current_dir} [\${VIRTUAL_ENV}] ${rvm_ruby} ${git_branch}
╰─%B${user_symbol}%b "

Я подозреваю, что другие параметры работают, потому что они заменяются чем-то, что затем оценивается каждый раз. Например, ${user_host} , вероятно, заменен чем-то, что содержит хотя бы приглашение, экранирующее %n и %m с символом @ между ними.

${LANG} работает, потому что он уже содержит ожидаемое значение при установке приглашения.

Вы можете легко подтвердить это, запустив:

echo $PROMPT

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