su 命令无法识别符号链接

su 命令无法识别符号链接

我有一个在 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 变量。

相关内容