我正在尝试创建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”时,我感到困惑。
我在这里错过了什么吗?
答案 0 :(得分:0)
您的数据脚本以root身份执行,而su命令保留$ HOME和其他ENV变量不变(请注意sudo是多余的)。 “ su-”也没有帮助
因此,请勿使用〜或$ HOME,而应使用完整路径/home/ubuntu/.bashrc
答案 1 :(得分:0)
我发现了问题所在。似乎〜/ .bashrc源还不足以重启外壳程序-环境变量在我在另一个bash脚本中引用它们后才起作用。