You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Yandex Cloud CLI创建VM时启动脚本调用本地环境变量异常

问题原因与解决方案

问题根源

你启动脚本里的${HOSTNAME}使用了双引号包裹,执行yc命令时,本地Shell会优先解析双引号内的环境变量,把你本地机器的HOSTNAME值替换进去,再将替换后的脚本内容上传到Yandex Cloud的VM中。所以VM实际执行的脚本里已经是你本地的主机名,而非VM自身的HOSTNAME环境变量。

解决方案

有两种方式避免本地Shell提前解析变量:

  • 将包裹sed命令的双引号改为单引号:单引号内的变量不会被本地Shell解析,会原封不动传递到VM,由VM的Shell在执行时解析。
  • 转义变量中的$符号:写成\${HOSTNAME},让本地Shell把$当作普通字符处理。

修正后的启动脚本(方式1:单引号)

#!/bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- 's/nginx/Yandex Cloud - ${HOSTNAME}/' /var/www/html/index.nginx-debian.html

修正后的启动脚本(方式2:转义$)

#!/bin/bash
apt-get update
apt-get install -y nginx
service nginx start
sed -i -- "s/nginx/Yandex Cloud - \${HOSTNAME}/" /var/www/html/index.nginx-debian.html

另外注意你原脚本末尾的EOF是多余内容,需要删除,否则脚本执行时会触发语法错误。

内容的提问来源于stack exchange,提问作者DeBug

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 05:03:18