-bash:: /bin/bash:错误的解释器:不允许操作

-bash:: /bin/bash:错误的解释器:不允许操作

我最近用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

如果您有多个文件,请随时更新最后一个合适的参数。

相关内容