在xonsh shell中,如何使用虚拟环境的名称作为$PROMPT定义中的条件
(更详细地说:我为xonsh本身提供了一个名为'xonsh'的虚拟环境,但是我不希望这个venv显示在提示符中,但是任何其他激活的venv都应该显示在提示符中。)
发布于 2018-11-08 15:25:43
首先看一下xonsh/prompt/env.py,看看我们如何定义env_name函数--因为您使用了virtualenv,所以您可以在xonshrc中执行如下操作
import os.path
def env_name_cust(pre_chars="(", post_chars=")"):
"""Extract the current environment name from $VIRTUAL_ENV
"""
env_path = __xonsh__.env.get("VIRTUAL_ENV", "")
env_name = os.path.basename(env_path)
if env_name and env_name != 'xonsh':
return pre_chars + env_name + post_chars然后将该函数添加到$PROMPT_FIELDS字典中:
$PROMPT_FIELDS['env_name_cust'] = env_name_cust
然后,可以在{env_name_cust}格式字符串中使用$PROMPT来代替默认的{env_name}。
如果您愿意,也可以使用${...}作为__xonsh__.env的替代品。
https://stackoverflow.com/questions/53209874
复制相似问题