我有一个Docker容器,该容器在启动时执行一个shell脚本(startService.sh),该脚本使用“source” linux关键字(我的Docker容器不喜欢)。运行镜像时,我看到以下错误消息:
./startService.sh:6:./startService.sh:源:找不到
为什么会看到此错误?不能在镜像的脚本中使用“source” linux命令吗?
Dockerfile:
FROM openjdk:8
VOLUME /opt/att/ajsc/config
COPY startService.sh /startService.sh
RUN chmod 777 /startService.sh
ENTRYPOINT ./startService.sh
startService.sh
#!/bin/sh
export AJSC_HOME=/opt/att/ajsc
export AJSC_CONFIG_HOME=${AJSC_HOME}/config
source /opt/att/ajsc/etc/config /run.source
最佳答案
source
是bash
中的命令,但sh
中没有。在sh
中,使用单点.
。
单个点.
也可以在bash
中使用。
您的脚本具有shebang #!/bin/sh
。可以将source
替换为.
,或者将#!/bin/sh
替换为#!/bin/bash
。
(此问题与 docker 无关。)
关于bash - 如何在Docker容器中执行Shell脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51014868/