!["bash"コマンドを使用または使用せずにシェルスクリプトを実行する[閉じる]](https://linux33.com/image/144764/%22bash%22%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%BE%E3%81%9F%E3%81%AF%E4%BD%BF%E7%94%A8%E3%81%9B%E3%81%9A%E3%81%AB%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
前に「bash」を追加すると、正しく実行されるスクリプトがあります。
bash ./myscript.sh /opt/config/run.config
しかし、そうしないと、下の行で停止して終了します。
source "/opt/config/test.config"
コマンドの前にbashを追加しても問題はありません。
新しいボックスを設定するときに不足している環境変数に何かがありますか?同じスクリプトが以前のシステムでも問題なく動作します。
答え1
#!/bin/bash
解決策:スクリプトヘッドにshebangを追加してください。
最初の行に必要なシェルを強制的に適用できます。#!/bin/bash
これは現在実行中のタスクを実行する別の方法です。bash ./myscript ...
#!/bin/bash
...
...
source "/opt/config/test.config"
...
...
問題の考えられる説明
シェルにはsource
組み込みコマンドはありませんsh
(そして名前の付いたプログラムもありませんsource
)。したがって、スクリプトが によって実行されると、sh
コマンドラインで失敗しますsource
。