我有一个在 AWS EC2 实例启动时运行的脚本
su -c "program_to_run" ec2-user
现在 program_to_run 依次调用python3 script.py
并失败并显示以下消息:
/bin/sh: python3: command not found
如果我直接以 ec2-user 身份登录,一切都会按预期运行。
我注意到 python3 只是 python3.6 的符号链接,所以我猜测该符号链接未通过 su 命令加载。
我怎样才能解决这个问题?
注意:我无法改变在 program_to_run 中调用脚本的方式,假设这是一个二进制代码,我无法控制其内容。
谢谢。
答案1
正如评论中提到的,罪魁祸首可能是PATH
变量。
该su
命令有一个-l
选项“以类似于真实登录的环境启动 shell 作为登录 shell”(请参阅man su
)。
因此,使用su -l -c "program_to_run" ec2-user
很可能会起作用,因为它将初始化类似于真实登录的 PATH 变量。