Alguma idéia de por que não consigo que uma variável de ambiente específica apareça no meu prompt?

1

Eu gostaria de listar o nome do meu virtualenv do Python no meu prompt do ZSH, mas não consigo fazê-lo funcionar. Está listado como uma variável de ambiente (VIRTUAL_ENV). Eu configurei outro script que retorna corretamente apenas o nome de base do meu env virtual (envTest), mas tentar incorporar isso no meu prompt não funcionou também.

Configuração de prompts:

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

Console:

╭─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

Eu posso fazer com que outras variáveis de ambiente apareçam no meu prompt (por exemplo, LANG).

Configuração de prompts:

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

Console:

╭─user@server ~/Projects/virtualenvTest [en_US.UTF-8]
╰─$ echo $LANG
en_US.UTF-8
    
por mcdoh 06.05.2017 / 03:23

1 resposta

1

Se você estiver realmente usando aspas duplas ao definir seu PROMPT , todos os parâmetros serão substituídos na definição e não toda vez que o prompt for impresso. Você pode evitar isso citando $VIRTUAL_ENV de maneira diferente.

Como colocar o prompt inteiro dentro de aspas simples para impedir a substituição de $VIRTUAL_ENV provavelmente interromperá o restante do prompt, tente citar apenas o $ , prefixando um \ , como este

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

Eu suspeito que os outros parâmetros funcionem porque eles são substituídos por algo que é então avaliado a cada vez. Por exemplo, ${user_host} é provavelmente substituído por algo que contenha pelo menos o prompt de escape %n e %m com @ entre.

${LANG} funciona porque já contém o valor esperado quando você define o prompt.

Você pode confirmar isso facilmente executando:

echo $PROMPT
    
por 07.05.2017 / 01:41