如何在容器内运行不带 sh 前缀的脚本

如何在容器内运行不带 sh 前缀的脚本

我们在开放轮班平台上运行容器。应用程序 Pod 运行良好。我们可以使用以下命令登录 Pod

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

tried /bin/sh

登录后,我们尝试执行特定文件夹(/opt/scripts)中可用的脚本

当我们运行时sh script它就起作用了。当我们运行时script没有sh它抛出command not found

在脚本中我们有#!bin/ksh(尝试使用 bash 和 sh)

如何运行script不带sh前缀的

更新: 尝试模拟容器内的场景

下面是容器内安装的shell

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 -)。

相关内容