我试着激活VirtualEnv通过shell脚本,像下面的一个,但它似乎不工作,
#!/bin/sh source ~/.virtualenvs/pinax-env/bin/activate
我得到以下错误
$ sh virtualenv_activate.sh virtualenv_activate.sh: 2: source: not found
但如果我在终端上输入相同的命令似乎工作
$ source ~/.virtualenvs/pinax-env/bin/activate (pinax-env)gautam@Aspirebuntu:$
所以我改变了shell脚本
#!/bin/bash source ~/.virtualenvs/pinax-env/bin/activate
如建议和使用
$ bash virtualenv_activate.sh gautam@Aspirebuntu:$
运行脚本。
这不会抛出一个错误,但也不激活虚拟环境
那么任何建议如何解决这个问题?
PS:我使用Ubuntu 11.04
sh不同于bash(虽然有些系统只是将sh链接到bash,所以运行sh实际上运行bash)。你可以认为sh是bash的一个watered down版本。 bash有一件事,sh不是“source”命令。这是为什么你得到这个错误…源运行良好在您的bash shell。但是当您使用sh启动脚本时,您将在子进程中的shell中运行该脚本。由于该脚本在sh中运行,因此找不到“source”。
原文链接:https://www.f2er.com/bash/389081.html解决方案是在bash中运行脚本。将第一行更改为…
#!/bin/bash
然后运行…
./virtualenv_activate.sh
…要么…
/bin/bash virtualenv_activate.sh
编辑:
如果想要激活virtualenv来更改调用脚本的shell,您需要使用“source”或“dot运算符”。这确保脚本在当前shell中运行(并因此更改当前环境)…
source virtualenv_activate.sh
…要么…
. virtualenv_activate.sh
另一方面,这就是为什么virtualenv总是说你需要使用“源”来运行它的激活脚本。