我正在尝试编写(我认为会是)一个简单的bash脚本,它将:
第1步工作得很好,但我似乎无法激活virtualenv.对于那些不熟悉virtualenv的人,它会创建一个activate激活虚拟环境的文件.在CLI中,您可以使用它运行它source
source $env_name/bin/activate
Run Code Online (Sandbox Code Playgroud)
其中$ env_name显然是安装虚拟环境的目录的名称.
在我的脚本中,在创建虚拟环境之后,我将激活脚本的路径存储如下:
activate="`pwd`/$ENV_NAME/bin/activate"
Run Code Online (Sandbox Code Playgroud)
但是当我打电话时source "$activate",我得到了这个:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
Run Code Online (Sandbox Code Playgroud)
我知道它$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: …Run Code Online (Sandbox Code Playgroud)