-bash::/bin/bash: 잘못된 해석기: 작업이 허용되지 않습니다.

-bash::/bin/bash: 잘못된 해석기: 작업이 허용되지 않습니다.

최근에 acceptopenjdk-13을 acceptopenjdk-16으로 교체했습니다. 이름별로 도구를 사용하는 스크립트 파일이 있어서 13에서 16으로 변경했습니다. 새로운 콘텐츠:

#!/bin/bash
if [ -z ${JAVA_OPTS+x} ]
then
  # Set some defaults
  JAVA_OPTS=""
fi
/Library/Java/JavaVirtualMachines/adoptopenjdk-16.jdk/Contents/Home/bin/java $JAVA_OPTS -jar $CROMWELL_HOME/womtool.jar "$@"

me $  which bash
/bin/bash
me $  ll /usr/local/cromwell
total 16
drwxr-xr-x   6 root  wheel   192B Sep 27 12:43 ./
drwxr-xr-x  23 root  wheel   736B Nov 10  2020 ../
-rwxr-xr-x@  1 root  wheel   210B Sep 27 12:42 cromwell*
lrwxr-xr-x   1 root  wheel    39B Jul 14 15:14 cromwell.jar
-rwxr-xr-x@  1 root  wheel   208B Sep 27 12:41 womtool*
lrwxr-xr-x   1 root  wheel    38B Jul 14 15:14 womtool.jar
m082166@me $ $CROMWELL_HOME/womtool validate MyWDL.wdl
-bash: /usr/local/cromwell/womtool: /bin/bash: bad interpreter: Operation not permitted
me $  /Library/Java/JavaVirtualMachines/adoptopenjdk-16.jdk/Contents/Home/bin/java $JAVA_OPTS -jar $CROMWELL_HOME/womtool.jar validate MyWDL.wdl
Success!

스크립트 내용이 완벽하게 실행되는데 왜 bash는 스크립트 실행을 거부합니까? 올바른 도구를 가리키도록 스크립트 파일을 업데이트한 후에 실제로 문제가 발생했습니다.

답변1

Elfshift 덕분에 이것은답변. 분명히 MacOS는 이러한 파일을 "격리"에 넣기로 결정하여 실행을 허용하지 않았습니다.

sudo xattr -d com.apple.quarantine /usr/local/cromwell/*

문제를 해결했다

답변2

파일의 확장된 속성을 봅니다(내 파일 이름은 입니다 script.sh).

xattr -l script.sh

속성 목록에 표시 되면 com.apple.quarantine다음 명령을 사용하여 제거하십시오.

xattr -d com.apple.quarantine my-file.sh

파일이 여러 개인 경우 마지막 적절한 매개변수를 자유롭게 업데이트하세요.

관련 정보