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

200
mcdoh

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

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

PROMPT="╭─$ $ [$] $ $ ╰─%B$%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="╭─$ $ [$] $ $ ╰─%B$%b " 

Приставка:

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

1 ответ на вопрос

1
Adaephon

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

Поскольку помещение всего приглашения в одинарные кавычки для предотвращения подстановки, $VIRTUAL_ENVвероятно, приведет к поломке остальной части приглашения, попробуйте просто $заключить в кавычки, добавив \, например:

PROMPT="╭─$ $ [\$] $ $ ╰─%B$%b " 

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

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

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

echo $PROMPT 

Похожие вопросы