为何bash脚本无法激活Python虚拟环境?控制台执行却正常
为什么bash脚本激活虚拟环境失败,但直接执行命令成功?
核心原因
- 直接在控制台执行
source /home/xnicram/python/AMW/env/bin/activate时,命令是在当前shell进程中运行的,它会修改当前shell的环境变量(比如PATH、VIRTUAL_ENV等),所以虚拟环境能正常激活。 - 但把命令写到bash脚本里直接运行(比如
./your_script.sh)时,系统会创建一个子shell进程来执行脚本。source命令只会修改子shell的环境变量,脚本执行完毕后子shell就会退出,所有修改的环境变量都会被销毁,父shell(你原本的控制台)完全不受影响,因此看起来脚本没生效。
解决方法
要让脚本在当前shell环境下执行,你需要用source或者.(点命令)来运行脚本,而不是直接执行脚本文件:
source ./your_script.sh # 或者 . ./your_script.sh
这样脚本里的source命令就会直接修改当前shell的环境,虚拟环境就能正常激活了。
内容的提问来源于stack exchange,提问作者XnIcRaM
相关产品推荐
相关产品推荐

