使用源命令运行bash脚本时出现问题

时间:2020-04-30 07:51:09

标签: python linux bash amazon-web-services ubuntu

我必须激活虚拟环境(venv),所以我必须在终端中手动运行以下命令:

source .venv/bin/activate     # To activate the virtual env.

deactivate                    # To deactivate the virtual env

这在手动运行时可以正常工作。现在,我必须在bash脚本中插入这些命令,以使AWS CodeDeploy可以将其部署在Ubuntu 18.04服务器上。

我的名为after_install.sh的bash脚本看起来像这样...

#!/usr/bin/env bash

set -e
source .venv/bin/activate
## DO SOME STUFF ##
deactivate

对于本地测试,我使脚本可执行,并使用bash after_install.sh运行了脚本。但是什么也没发生。它不会激活虚拟环境。在运行bash脚本时,上述命令似乎均无效。

我不明白为什么当我手动运行这些命令但不使用bash脚本运行这些命令时为何起作用。到底是怎么回事?我需要在bash脚本中编写这些命令,以便AWS CodeDeploy可以将其部署在服务器上。

1 个答案:

答案 0 :(得分:0)

在这种情况下,请勿依赖activate。在脚本之外执行source activate,然后检查PATH。复制PATH的值,然后在脚本中将操作路径设置为复制的值:

#!/usr/bin/env bash
setenv PATH='copied_value_of_path'
# do stuff

在这一点上,我必须假设您将在“ DO SOME STUFF”部分中运行一个或多个python脚本。编辑脚本,并确保您具有以下内容:

#!/bin/env python

作为每个脚本的第一行。这是Shell脚本约定,用于让Shell知道要为此脚本使用哪个解释器。

相关问题