bin/activate脚本的"来源"是什么意思?

dav*_*vid 5 bash shell

这是参考我收到的回复,说我需要获取此脚本以激活virtualenv.

不知道这意味着什么,初学者在这里试图找出virtualenv.

pax*_*blo 13

获取脚本是在当前shell的上下文中运行它,而不是在新shell中运行它.

例如:

. myscript.sh
Run Code Online (Sandbox Code Playgroud)

要么:

source myscript.sh
Run Code Online (Sandbox Code Playgroud)

(取决于你正在运行的shell).

如果您在自己的shell中运行脚本,则它对环境所做的任何更改都在 shell 中,而不是您从中调用的那个.通过采购它,您可以影响当前shell的环境.

例如,检查以下记录:

pax> cat script.sh 
export xyzzy=plugh
echo $xyzzy

pax> export xyzzy=twisty

pax> echo $xyzzy ; script.sh ; echo $xyzzy
twisty
plugh
twisty

pax> echo $xyzzy ; . script.sh ; echo $xyzzy
twisty
plugh
plugh
Run Code Online (Sandbox Code Playgroud)

当您运行脚本(不同的shell)时,它会设置xyzzyplugh但是当shell退出到原始shell时会丢失.您会发现原始值已经"恢复"(在引号中,因为原始值从未实际更改,只有它的副本).

当您采购它,它就像你键入当前shell中的命令等变量的影响是持久的.