显然我在这里做错了。
Cloud init脚本/etc/cloud/cloud.cfg
...
runcmd:
- [ sh, /opt/cloud-init-scripts/whatever.sh ]
脚本/opt/cloud-init-scripts/whatever.sh
#!/bin/bash
...
. /home/ubuntu/third-party/script.sh --silent
第三方脚本/home/ubuntu/third-party/script.sh
#!/usr/bin/env bash
function some_function() {
...
错误我进入/var/log/cloud-init-output.log
/opt/cloud-init-scripts/whatever.sh: 3: /home/ubuntu/third-party/script.sh: Syntax error: "(" unexpected
我必须在这里遗漏一些明显的东西。我在调用第三方脚本时尝试使用source
,.
和sh
,尝试更改各处的shebang但没有成功。
如果我从命令行运行相同的命令,它就可以工作。
答案 0 :(得分:2)
您已在sh
下指定runcmd
个shell,但已将她设置为bash
。后者并不重要,因为如果你以sh /opt/cloud-init-scripts/whatever.sh
运行它将使用sh shell运行。我猜您可能正在使用与POSIX
shell不兼容的非sh
shell功能。
或者,如果您打算在bash
shell中运行脚本,请将runCmd
脚本中的cloud-init
更改为
runcmd:
- [ bash, /opt/cloud-init-scripts/whatever.sh ]