マウントにより隔離フラグが追加され、次の原因が発生しています:/ bin / bash:不正なインタープリター:操作は許可されていませんが、通常の容疑者ではありません


8

OK、私は同様の問題を抱えています:-bash:Applications / mvim:/ bin / sh:bad interpreter:Operation not allowed-しかし、それは同じ問題ではありません。私は同じ結果を得ています。

com.apple.quarantineフラグではないことをすでに確認しました。

これは行末ではありません(スクリプトはviからのみ作成されました)。次を使用してスクリプトを実行できます。

bash simpleshell.sh

結果は次のとおりです。

fawkes:tmp kylar$ vi simpleshell.sh
fawkes:tmp kylar$ chmod +x simpleshell.sh 
fawkes:tmp kylar$ ./simpleshell.sh 
-bash: ./simpleshell.sh: /bin/bash: bad interpreter: Operation not permitted
fawkes:tmp kylar$ cat simpleshell.sh 
#!/bin/bash
export FOO=Hey
echo $FOO
fawkes:tmp kylar$ which bash
/bin/bash
fawkes:tmp kylar$ bash simpleshell.sh 
Hey
fawkes:tmp kylar$ xattr -l simpleshell.sh 
fawkes:tmp kylar$ 

更新:noexecとしてマウントされているのはファイルシステムではないようです。/ tmp、〜、/ sourceの3つの場所でスクリプトを実行してみました。

UPDATE2:OK、掘り下げた後、マウントされたdmgである/ source内にスクリプトを作成しました。ここでxattr -lを実行しても何も見つかりませんでした。スクリプトを〜にcpしてxattr -lを実行すると、com.apple.quarantine xattrが含まれていました。直感的に、/ sourceのマウント属性を調べたところ、次のことがわかりました。

/dev/disk1s9 on /Volumes/code (hfs, local, nodev, nosuid, journaled, noowners, quarantine, mounted by kylar)

したがって、このdmgをマウントすると、隔離として設定されます。隔離フラグでマウントしないようにマウントに指示するにはどうすればよいですか?〜のフラグを削除すると、スクリプトは正常に実行されました。


ここで答えが得られない場合は、UNIXおよびLinux SEで質問することを検討してください。
Max Ried

私はとにかくそれをクロスポストするかもしれません-これは基本的に私が仕事をするのを妨げています:(
Kylar

同じファイルシステムで他のプログラムを同様に実行できますか?それは使用していchmod +x file.sh; ./file.shます。おそらく、そのファイルシステムは「noexec」フラグでマウントされています。
cm2

2
これで実際の問題であると判断したので、mountに隔離フラグを使用しないように指示する方法についてのみ質問するように質問を書き直すと役立つ場合があります。また、特定のボリュームでそれを無効にする方法はわかりませんが、検疫を完全に無効にしますdefaults write com.apple.LaunchServices LSQuarantine -bool NO
houbysoft 2012

2
はい、解決しました。.dmgファイルにcom.apple.quarantine xattrが設定されていました。アンマウントし、xattrをクリアしてから、dmgを再マウントする必要がありました。GAH。@houbysoft:完全にオフにするヒントをありがとう。
Kylar、

回答:


1

スクリプトは、隔離フラグが設定された.dmg内から実行されていました。.dmgがマウントされたときに、継承されているが表示されない隔離フラグを使用してマウントされていました。私は.dmgをマウント解除し、隔離フラグを削除してから再マウントしましたが、すべて順調でした。


これありがとう。私も同様の問題を抱えていて、私を狂わせていました。Vim(または猫)が作成したPerlスクリプトで、それに関連付けられた隔離xattrはありません。ただし、スクリプトはマウントされたスパースバンドルにありました。このページを読んだ後、私はファイルシステムをアンマウントし、バンドルの中を調べました:「com.apple.quarantine」xattrが設定された「token」という名前のファイルがそこにありました。xattrを削除してスパースバンドルファイルシステムを再マウントすると、Perlスクリプトに関する「悪いインタープリター」の問題はなくなりました。
Lee Johnson、

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.