我正在尝试编写一个简单的 bash 脚本,它可以:
步骤1工作得很好,但是我似乎无法激活 Virtual alenv。对于那些不熟悉 viralenv 的用户,它创建一个 activate
文件来激活虚拟环境。在 CLI 中,使用 source
运行它
source $env_name/bin/activate
其中 $env _ name 显然是安装虚拟 env 的 dir 的名称。
在我的脚本中,在创建了虚拟环境之后,我存储了激活脚本的路径,如下所示:
activate="`pwd`/$ENV_NAME/bin/activate"
但当我打电话给 source "$activate"
时,我得到了这个:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
我知道 $activate
包含激活脚本的正确路径,事实上我甚至在调用 source
之前测试文件是否在那里。但是 source
本身似乎找不到它。我还尝试在 CLI 中手动运行所有步骤,在 CLI 中一切正常。
在我的研究中,我发现了 这个剧本,它与我想要的类似,但是也做了很多其他我不需要的事情,比如将所有的虚拟环境存储在一个 ~/中。Viralenv 目录(或 $WORKON _ HOME 中的任何目录)。但在我看来,他似乎正在创建通往 activate
的路径,并以与我基本相同的方式调用 source "$activate"
。
以下是整个剧本:
#!/bin/sh
PYTHON_PATH=~/bin/python-2.6.1/bin/python
if [ $# = 1 ]
then
ENV_NAME="$1"
virtualenv -p $PYTHON_PATH --no-site-packages $ENV_NAME
activate="`pwd`/$ENV_NAME/bin/activate"
if [ ! -f "$activate" ]
then
echo "ERROR: activate not found at $activate"
return 1
fi
source "$activate"
else
echo 'Usage: djangoenv ENV_NAME'
fi
免责声明: 我的 bash 脚本-fu 非常弱。我在 CLI 相当舒服,但是可能有一些非常愚蠢的原因,这不工作。