2017-09-19 11 views
1

明らかに私はここで何か間違っています。クラッシュinitからbashスクリプトを作成できない

私は/var/log/cloud-init-output.log

に取得しています雲の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() { 
... 

エラー

/opt/cloud-init-scripts/whatever.sh: 3: /home/ubuntu/third-party/script.sh: Syntax error: "(" unexpected 

私はここで明らかに何かを欠落している必要があります。私はsource.shを使ってみましたが、サードパーティのスクリプトを呼び出すときにどこでもシバンを変更しようとしましたが成功しませんでした。

コマンドラインから同じコマンドを実行すると動作します。

+0

runCmdcloud-initでスクリプトを変更、bashシェルでスクリプトを実行する場合(もちろん!)私はまた、いくつかを持っていました権限の問題はありますが、この質問とは無関係です。上記のように答えを書いておきたい場合は、私はそれを受け入れるでしょう – Tom

答えて

1

runcmdの下にshシェルを指定しましたが、she-bangはbashに設定されています。後者は、sh /opt/cloud-init-scripts/whatever.shとして実行すると、shシェルで実行されるため、問題はありません。おそらくシェルと互換性のないPOSIXシェル機能を使用していると思います。

または代わりにあなたの意図はできるだけ早く私はそれが私に撃墜されたことを書いたとして

runcmd: 
- [ bash, /opt/cloud-init-scripts/whatever.sh ] 
+1

ちょうど、私は何をするのかを指定せずに ' - [/opt/cloud-init-scrips/whatever.sh]' – Tom

関連する問題