在Bash脚本中激活virtualenv不起作用

编写脚本以自动化我的烧瓶环境设置.

if [[ -z $1 ]];
    then
        echo "usage: flaskup <dirname> <template dir>";
        exit
    else
        virtualenv $1 &&
        cd ./$1 &&
        source bin/activate &&
        bin/pip install flask &&
        mkdir ./app &&
        mkdir ./app/static &&
        mkdir ./app/templates && 
        exit;
fi

我希望这会将我留在它创建的目录中,并激活虚拟环境,但是它会让我在同一个目录中运行脚本.如何在激活的虚拟环境中使用shell退出脚本?

最佳答案 如果你在自己的shell中运行脚本(将它作为/ path / to / script或脚本运行,如果它存在于你的$PATH中)那么你就无法得到你想要的东西.运行脚本的shell与您运行它的shell不同,它不能更改父shell的状态.你可以做的最接近的是让脚本将路径作为输出回显并运行为cd“$(/ path / to / script)”或类似的.

或者,如果您运行脚本为. / path / to / script(或类似的)然后你用你当前的shell运行它,并且它会在你当前的shell而不是子shell中发生任何目录更改.

点赞