AWS EC2用户数据脚本npm install路径错误问题求助
问题解决:EC2用户数据脚本npm install路径错误
问题根源
每个su - ec2-user -c命令都会启动独立的用户shell会话,你之前执行的cd仅在root当前shell生效,不会传递到su启动的新shell中,导致npm install始终在ec2-user家目录执行。
修正后的完整脚本
#!/bin/bash yum update -y export HOME=/home/ec2-user nodev='16.19.0' nvmv='0.39.3' gitrepo='https://github.com/ptv1p3r/etl-fuel-priceguide-ec2.git' # 安装nvm su - ec2-user -c "curl https://raw.githubusercontent.com/creationix/nvm/v${nvmv}/install.sh | bash" # 安装指定Node版本并设为默认 su - ec2-user -c "nvm install ${nodev}" su - ec2-user -c "nvm alias default ${nodev}" # 安装git yum install git -y # 克隆仓库到指定目录 su - ec2-user -c "git clone ${gitrepo} /home/ec2-user/etl-fuel-priceguide-ec2" # 在目标目录执行npm install su - ec2-user -c "cd /home/ec2-user/etl-fuel-priceguide-ec2 && npm install" # 启动应用 su - ec2-user -c "cd /home/ec2-user/etl-fuel-priceguide-ec2 && node index.js"
关键修改点
- 将
cd与后续操作合并到同一个su会话中,用&&串联命令,确保目录切换成功后再执行对应操作 - 添加
nvm alias default ${nodev},避免后续会话需手动切换Node版本 - 克隆仓库时显式指定目标路径,确保克隆位置准确
内容的提问来源于stack exchange,提问作者Pedro Roldan
相关产品推荐
相关产品推荐

