컨테이너 내부에서 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 -).

관련 정보