我正在尝试编写一个简单的脚本来帮助我激活(源)virtualenv并同时设置一些环境变量。以下是尚未包含任何环境变量的当前版本。
#!/bin/bash
if [ -z "$BASH_VERSION" ]
then
exec bash "$0" "$@"
fi
# Your script here
script_dir=`dirname $0`
cd $script_dir
/bin/bash -c ". ./django-env/bin/activate; exec /bin/bash -i"
这个脚本的问题有两个。
当我运行它时 - 看起来成功,因为它将命令行前缀更改为(django-env)
- 它前面缺少My-Computer-Name:
。显然,它表明我通常以(django-env) My-Computer-Name:
作为前缀。
它不会正确激活virtualenv。也就是说,当我检查which python
时,我被告知使用了virtualenv Python。另一方面,当我检查which pip
或which python3
时,会使用全局系统的Python。
我可以做些什么来解决这些问题并激活环境?
答案 0 :(得分:2)
我怀疑exec /bin/bash -i
存在问题 - 已执行的bash可以运行.bash_profile
和.bashrc
来改变当前环境。
不是在shell上执行shell的shell脚本,而是最好创建一个别名或shell函数:
django_activate() {
cd $1
. ./django-env/bin/activate
}
将其放入.bashrc
,以便它可以在所有shell中使用并以django_activate $venv_dir
运行;例如django_activate ~/projects/work
。
答案 1 :(得分:0)
以下代码执行我打算执行的操作。我用source script.sh
#!/bin/bash
if [ -z "$BASH_VERSION" ]
then
exec bash "$0" "$@"
fi
# Your script here
script_dir=`dirname $0`
cd $script_dir
/bin/bash -c ". ./django-env/bin/activate"