使用shell脚本激活VirtualEnv似乎不工作

前端之家收集整理的这篇文章主要介绍了使用shell脚本激活VirtualEnv似乎不工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试着激活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”。

解决方案是在bash中运行脚本。将第一行更改为…

#!/bin/bash

然后运行…

./virtualenv_activate.sh

…要么…

/bin/bash virtualenv_activate.sh

编辑:

如果想要激活virtualenv来更改调用脚本的shell,您需要使用“source”或“dot运算符”。这确保脚本在当前shell中运行(并因此更改当前环境)…

source virtualenv_activate.sh

…要么…

. virtualenv_activate.sh

另一方面,这就是为什么virtualenv总是说你需要使用“源”来运行它的激活脚本。

原文链接:https://www.f2er.com/bash/389081.html

猜你在找的Bash相关文章