우리는 Open Shift 플랫폼에서 컨테이너를 실행합니다. 애플리케이션 포드가 제대로 실행되고 있습니다. 다음 명령어를 사용하여 포드에 로그인할 수 있습니다.
oc exec -it <podname> -- /bin/bash
반품tried /bin/sh
로그인한 후 특정 폴더(/opt/scripts)에서 사용 가능한 스크립트를 실행하려고 합니다.
실행하면 sh script
작동합니다 . 던지지 script
않고 달리면sh
command 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
스크립트가 실제로 올바르게 작동하면 sh
shebang을 다음으로 변경할 수 있습니다 #!/bin/sh
(또는 더 나은 방법은#!/bin/sh -
).