在Bash脚本中激活virtualenv无效

4

我要编写一个脚本来自动化设置我的flask环境。

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

我希望这个脚本能让我进入创建的目录并激活虚拟环境,然而它却让我停留在运行脚本的相同目录。我该怎么做才能让脚本退出并在激活的虚拟环境中呢?
1个回答

2
如果您在自己的shell中运行脚本(使用/path/to/script或者如果该脚本位于您的$PATH中,则使用script),则无法得到您想要的结果。运行脚本的shell与您从中运行它的shell不同,因此它无法更改父shell的状态。最接近你能做到的就是让脚本将路径作为输出进行回显,并以cd“$(/path/to/script)”或类似方式运行它。
或者,如果您将脚本以 . /path/to/script (或类似方式)运行,则会在当前shell中运行它,任何目录更改都将在当前shell而不是子shell中发生。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接