Obtendo um erro 'source: not found' ao usar o source em um script bash

Estou tentando escrever (o que eu pensava) um script simples do bash qu

run virtualenv para criar um novo ambiente a $ 1 ative o ambiente virtualais algumas coisas (instale o django, adicione django-admin.py no caminho do virtualenv, etc

@Step 1 funciona muito bem, mas não consigo ativar o virtualenv. Para quem não conhece o virtualenv, ele cria umactivate arquivo que ativa o ambiente virtual. Na CLI, você o executa usandosource

source $env_name/bin/activate

Onde $ env_name, obviamente, é o nome do diretório em que o ambiente virtual está instalado.

No meu script, depois de criar o ambiente virtual, eu armazeno o caminho para o script de ativação assim:

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

Mas quando ligo parasource "$activate", Eu entendi isso

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

Eu sei disso$activate contém o caminho correto para o script de ativação, na verdade eu até testei se um arquivo estava lá antes de ligar parasource. Massource em si não parece encontrá-lo. Também tentei executar todas as etapas manualmente na CLI, onde tudo funciona be

Na minha pesquisa eu encontreiEste script, que é semelhante ao que eu quero, mas também está fazendo muitas outras coisas que eu não preciso, como armazenar todos os ambientes virtuais em um diretório ~ / .virtualenv (ou o que estiver em $ WORKON_HOME). Mas parece-me que ele está criando o caminho paraactivate e chamandosource "$activate" basicamente da mesma maneira que eu sou.

Aqui está o script em sua totalidade:

#!/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

DISCLAIMER: Meu script de fu do bash é bem fraco. Estou bastante à vontade na CLI, mas pode haver algum motivo extremamente estúpido para isso não estar funcionand

questionAnswers(3)

yourAnswerToTheQuestion