Estoy tratando de escribir (lo que pensé que sería) un script bash simple que:Conseguir una 'fuente: no encontrado' error al utilizar la fuente en una escritura del golpe
- plazo para crear un virtualenv nuevo entorno en $ 1
- activar el entorno virtual
- hacer algunas cosas más (instalar Django, añadir django-admin.py a la trayectoria de la virtualenv, etc.)
Paso 1 funciona bastante bien, pero me parece que no puede activar el virtualenv. Para aquellos que no estén familiarizados con virtualenv, crea un archivo activate
que activa el entorno virtual. A partir de la CLI, se ejecuta utilizando source
source $env_name/bin/activate
Donde $ env_name, obviamente, es el nombre del directorio que el env virtual está instalado.
En mi guión, después de crear el entorno virtual, almaceno la ruta a la secuencia de activación de esta manera:
activate="`pwd`/$ENV_NAME/bin/activate"
Pero cuando llamo source "$activate"
, me sale esto:
/home/clawlor/bin/scripts/djangoenv: 20: source: not found
Sé que $activate
contiene la ruta de acceso correcta al script de activación, de hecho incluso pruebo que un archivo está allí antes de llamar al source
. Pero source
parece que no puede encontrarlo. También intenté ejecutar todos los pasos manualmente en la CLI, donde todo funciona bien.
En mi investigación encontré this script, que es similar a lo que quiero pero también estoy haciendo muchas otras cosas que no necesito, como almacenar todos los entornos virtuales en un directorio ~/.virtualenv (o lo que sea en $ WORKON_HOME). Pero me parece que está creando el camino hacia activate
, y llamando al source "$activate"
básicamente de la misma manera que yo.
Aquí está la secuencia de comandos en su totalidad:
#!/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
AVISO: Mi fiesta de script-fu es bastante débil. Estoy bastante cómodo en el CLI, pero puede haber alguna razón extremadamente estúpida por la que esto no está funcionando.
Esta solución fue originalmente un comentario en la respuesta de Norman Ramsey. Como esto es lo que realmente solucionó el problema, he cambiado esto para que sea la 'respuesta aceptada' –
La respuesta correcta es Ramsey's not guns '. – Enzo