
최근에 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
파일이 여러 개인 경우 마지막 적절한 매개변수를 자유롭게 업데이트하세요.