コンテナ内でshプレフィックスなしでスクリプトを実行する方法

コンテナ内でshプレフィックスなしでスクリプトを実行する方法

私たちはOpen Shiftプラットフォームでコンテナを実行します。アプリケーションポッドが正しく実行されています。次のコマンドを使用してポッドにログインできます。

oc exec -it <podname> -- /bin/bash

返品tried /bin/sh

ログインしたら、特定のフォルダ(/opt/scripts)から利用可能なスクリプトを実行しようとしています。

実行するとsh script機能します。投げずscriptに走るとshcommand not found

私たちが持っているスクリプトでは#!bin/ksh(bashとshで試しました)

プレフィックスscriptなしで実行する方法sh

修正する: コンテナ内のシーンをシミュレートしてください。

以下はコンテナにインストールされたシェルです。

sh-4.4$ cat /etc/shells 
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

これはスクリプトです。最初の行が更新されました。

sh-4.4$ more tRun
#!/bin/sh

ただプレフィックスshまたは実行bash

sh-4.4$ tRun
sh: tRun: command not found

sh-4.4$ sh tRun
JAVA_HOME is not set. Unexpected results may occur.
Set JAVA_HOME to the directory of your local JDK to avoid this message.
Please enter aguments:
^C

sh-4.4$ bash tRun
JAVA_HOME is not set. Unexpected results may occur.
Set JAVA_HOME to the directory of your local JDK to avoid this message.
Please enter aguments:
^C

ベストアンサー1

「スタンドアロン」を実行するには、スクリプトでshebangに提供されているコマンドを使用できる必要があります。この場合、コンテナイメージにインストールする必要が/bin/kshあります。ksh

スクリプトが実際に正しく機能している場合は、shshebangを次のように変更できます#!/bin/sh(またはより良い方法は#!/bin/sh -)。

おすすめ記事