AWS EC2用户数据:使用sudo时无法识别命令

时间:2019-07-03 21:16:19

标签: bash amazon-web-services amazon-ec2

我正在尝试创建EC2用户数据脚本以在启动时运行其他脚本。但是,我运行的脚本无法识别一些我已经声明的命令和变量。我以“ ubuntu”用户身份运行命令,但仍然无法正常工作。

我的用户数据脚本如下所示:

export user="ubuntu"
sudo su $user -c ". ./run_script"

在脚本中,我有以下几行:

THIS_PATH="/some/path"
echo "export SOME_PATH=$THIS_PATH" >> ~/.bashrc

source ~/.bashrc

但是,脚本无法运行SOME_PATH/application,并且echo $SOME_PATH返回空白行。我很困惑,因为当我使用SSH登录EC2时$SOME_PATH/application可以工作,而使用whoami的调试日志返回“ ubuntu”时,我感到困惑。

我在这里错过了什么吗?

2 个答案:

答案 0 :(得分:0)

您的数据脚本以root身份执行,而su命令保留$ HOME和其他ENV变量不变(请注意sudo是多余的)。 “ su-”也没有帮助

因此,请勿使用〜或$ HOME,而应使用完整路径/home/ubuntu/.bashrc

答案 1 :(得分:0)

我发现了问题所在。似乎〜/ .bashrc源还不足以重启外壳程序-环境变量在我在另一个bash脚本中引用它们后才起作用。