AWS EC2 Launch 配置用户数据 - 找不到命令

AWS EC2 Launch configuration user data - command not found

对于 AWS EC2 (Amazon Linux) 启动配置,我设置了一些具有如下命令序列的用户数据。

#!/bin/bash -exv \n", 
"#Execute Init resource\n", 
"whoami\n", 
"pwd\n", 
"npm -v\n",

实例启动后,用户数据执行正常,像 "whoami" 这样的本机命令在 cloud-init-output.log 中给出了正确的输出,但它为 npm 命令提供了错误消息,如 "npm command not found".

但是,当我通过 ssh 连接到实例并尝试执行一些 npm 命令时,它工作正常。

有人可以指导我解决这个问题吗?

谢谢

用户数据执行为rootnpm 的路径可能不在 rootPATH 中。指定 npm 的完整路径,它应该可以工作。

它在您 ssh 时起作用的原因是因为 npm 在您的 PATH 中可用。

@helloV 的回答很好。感谢@helloV。 尽管如此,我还是试图在实例启动期间找到更多关于 root 用户的 PATH 问题,我发现我的 AMI 中 NVM(节点版本管理器)包的 nvm.sh 扩展了 PATH 以添加 'npm' 的路径和'node'.

这个 nvm.sh 是从 .bash_profile -> .bashrc

触发的

有一点很清楚,root 用户的 .bash_profile 在实例启动期间执行用户数据脚本之前未执行。所以我在我的用户数据脚本中获取了 .bash_profile,现在用户数据脚本中的更多 npm 命令工作正常。

https://github.com/creationix/nvm/issues/381 中找到 nvm.sh 详细信息 感谢 Ben Creasy。

希望对您有所帮助。