从bash scrip初始化的VirtualEnv

2024-05-13 02:56:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图写一个超级简单的bash脚本。基本上是激活一个虚拟环境,然后切换到工作目录。我做了很多工作,只服从一个命令,这才有意义。

基本上。。。

#!/bin/bash
source /usr/local/turbogears/pps_beta/bin/activate
cd /usr/local/turbogears/pps_beta/src

但是,当它运行时,它只是转储回shell,而我仍然在运行脚本的目录中,并且环境没有被激活。


Tags: 命令目录脚本bashsourcebinusrlocal
3条回答

您只需使用source命令运行脚本。这是因为cd命令是运行它的shell的本地命令。当您直接运行一个脚本时,将执行一个新的shell,当它到达脚本的文件结尾时终止。通过使用source命令,可以告诉shell直接执行脚本的指令。

我想你希望你的脚本是动态的,但是,作为一个快速修复时,在一个新的系统上我创建了一个别名。

begin i.e

the env is called 'py1' located at ~/envs/py1/ with a repository location at ~/proj/py1/

alias py1='source ~/envs/py1/bin/activate; cd ~/proj/py1/;

end i.e

现在,您可以从CLI中的任何位置键入py1来访问您的项目和virtualenv。

我知道这不是一个接近理想的地方,违背了DRY和许多其他编程概念。这只是一种快速而肮脏的方法,无需设置变量即可快速访问env和项目。

cd的值是当前脚本的本地值,当您从文件末尾掉下来时,当前脚本将结束。

你要做的并不是“超级简单”,因为你想覆盖这个行为。

查看exec,用您选择的进程替换当前进程。

要将命令输入交互式Bash,请查看--rcfile选项。

相关问题 更多 >