我正在尝试编写(我想会是)一个简单的bash脚本,该脚本将:
- 运行virtualenv以创建新环境,价格为$ 1
- 激活虚拟环境
- 做更多的事情(安装django,将django-admin.py添加到virtualenv的路径,等等)
第1步工作得很好,但是我似乎无法激活virtualenv。对于不熟悉virtualenv的用户,它会创建一个activate
激活虚拟环境的文件。在CLI中,使用source
source $env_name/bin/activate
$ env_name显然是虚拟环境安装目录的名称。
在我的脚本中,创建虚拟环境后,我将存储激活脚本的路径,如下所示:
activate="`pwd`/$ENV_NAME/bin/activate"
但是当我打电话时source "$activate"
,我得到了:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
我知道其中$activate
包含激活脚本的正确路径,实际上我什至在调用之前就测试了文件是否存在source
。但是source
它本身似乎找不到。我也尝试过在CLI中手动运行所有步骤,一切正常。
在我的研究中,我发现了该脚本,该脚本与我想要的脚本类似,但是它还执行了许多我不需要的其他事情,例如将所有虚拟环境存储在〜/ .virtualenv目录(或其中的任何内容)中。 $ 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脚本功能非常薄弱。我对CLI相当满意,但是很可能有一些非常愚蠢的原因,使它无法正常工作。