加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash脚本中使用源时获取“源代码:未找到”错误

发布时间:2020-12-15 16:47:28 所属栏目:安全 来源:网络整理
导读:我试图写(我想是)一个简单的bash脚本,将: 运行virtualenv以$ 1创建一个新环境 激活虚拟环境 做一些更多的东西(安装django,添加django-admin.py到virtualenv的路径等) 步骤1工作得很好,但我似乎无法激活virtualenv。对于那些不熟悉virtualenv的用户,它会
我试图写(我想是)一个简单的bash脚本,将:

>运行virtualenv以$ 1创建一个新环境
>激活虚拟环境
>做一些更多的东西(安装django,添加django-admin.py到virtualenv的路径等)

步骤1工作得很好,但我似乎无法激活virtualenv。对于那些不熟悉virtualenv的用户,它会创建一个激活文件来激活虚拟环境。从CLI,您使用源运行它

source $env_name/bin/activate

其中$ env_name,显然,是安装虚拟env的目录的名称。

在我的脚本中,创建虚拟环境后,我存储激活脚本的路径,如下所示:

activate="`pwd`/$ENV_NAME/bin/activate"

但是当我调用源“$ activate”,我得到这个:

/home/clawlor/bin/scripts/djangoenv: 20: source: not found

我知道$ activate包含激活脚本的正确路径,实际上我甚至测试一个文件是在我之前,我调用源。但源自身似乎找不到它。我也试图在CLI中手动运行所有的步骤,其中一切正常。

在我的研究中,我发现this script,这是类似于我想要的,但也做了很多其他事情,我不需要,像存储所有的虚拟环境在?/ .virtualenv目录(或任何是$ WORKON_HOME)。但在我看来,他正在创建的路径激活,和调用源“$ 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很舒服,但可能有一些非常愚蠢的理由,这不工作。

如果你正在写一个bash脚本,请按名称调用它:
#!/bin/bash

/ bin / sh不保证为bash。这在Ubuntu几年前造成了大量的破碎脚本(IIRC)。

源内置在bash中工作正常;但你可能只是使用像诺曼建议的点。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读