最近、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
複数のファイルがある場合は、最後の適切なパラメータを自由に更新してください。