我最近用acceptopenjdk-16替换了acceptopenjdk-13。我有一个按名称使用该工具的脚本文件,因此我将其从 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
如果您有多个文件,请随时更新最后一个合适的参数。