移动并激活虚拟环境的别名?

0 投票
2 回答
1275 浏览
提问于 2025-04-18 13:22

我最近在用Python,之前我换到了fish这个命令行工具。主要是因为我不太用bash脚本(以前用过,但现在工作上用不到)。
我有几个虚拟环境(virtualenv)来兼容Python。每个Django版本大概有2到3个虚拟环境(我用的是3个版本),所以总共大约有9个虚拟环境。现在我用bash写了一个脚本(这是脚本的一部分):

if [[ $1 == "myproject" ]]; then
    cd $HOME/Prog/Scripts/Python/project/
    if [[ $2 == "--env" ]]; then
        source ../dj1.6-3.3venv/bin/activate
    fi
    if [[ $3 == "--run" ]]; then
        python manage.py runserver
    fi
fi

现在我在fish里有一个简单的别名,内容是:

alias project_django='cd ~/Prog/Scripts/Python/project/; and source ../dj1.6-3.4.1venv/bin/activate.fish'

虽然这个别名可以用,但它把我的提示符搞坏了,只显示了一个普通的>,这样就去掉了git功能、当前工作目录等等。

有没有办法解决这个问题?比如重新调用fish的提示符初始化?有没有人遇到过同样的问题,怎么解决的呢?

2 个回答

2

之前有人遇到过这个问题,并且创建了一个叫做 virtualfish 的工具。这个工具的文档里有一部分是关于如何自定义提示符的,具体可以查看 这段内容

virtualfish 不会去随便改动你的提示符。因为 Fish 的提示符是一个函数,所以自动修改起来比较复杂,手动根据自己的喜好来调整会更方便。

如果你想把 virtualenv 加到你的提示符里,最简单的方法是输入 funced fish_prompt,然后在某个地方添加以下这一行:

if set -q VIRTUAL_ENV
    echo -n -s (set_color -b blue white) "(" (basename "$VIRTUAL_ENV") ")" (set_color normal) " "
end

接着,输入 funcsave fish_prompt 来把你新的提示符保存到磁盘上。

3

好的。看起来提示的大小太大了。当当前终端的大小太小,无法显示完整的提示时,它就只会显示一个经典的 > 符号。虽然这样有点傻,但可能对这里的一些人有帮助... 只需要调整一下终端窗口的大小就可以了。

撰写回答