mount正在添加隔离标志,从而导致:/ bin / bash:错误的解释器:不允许操作-但通常不是可疑的


8

好的,我遇到类似的问题:-bash:应用程序/ mvim:/ bin / sh:错误的解释器:不允许进行操作 -但这不是同一个问题。我得到相同的结果。

我已经确认它不是 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挂载的文件系统。我尝试在3个不同的位置运行脚本:/ tmp,〜和/ source。

UPDATE2:好的,经过更多挖掘-我在/ source中创建了一个脚本,该脚本是已安装的dmg。那是我运行xattr -l的地方,什么也没发现。当我将脚本cp到〜并运行xattr -l时,它便有了com.apple.quarantine xattr。凭直觉,我查看了/ source的mount属性并发现:

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

因此,当我安装此dmg时,它将被设置为隔离区。我怎样才能告诉mount不要用隔离标志挂载它?一旦删除〜中的标志,脚本就可以正常运行。


如果您在这里找不到答案,请考虑在UNIX和Linux SE上进行询问。
bot47 2012年

无论如何,我可能只是交叉发布-这基本上是在阻止我完成任何工作:(
Kylar 2012年

您是否可以类似的方式在同一文件系统上运行其他程序?那是使用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:感谢您将其完全关闭的提示。
凯拉尔2012年

Answers:


1

该脚本是从.dmg中运行的,该文件上已设置了隔离标志。挂载.dmg时,它是使用继承但未显示的隔离标志来挂载的。我卸载了.dmg,删除了隔离标志,然后重新安装了它,一切都很好。


这次真是万分感谢。我有一个类似的问题,这让我发疯:一个由Vim(甚至是cat)创建的Perl脚本,没有与此相关的隔离xattr。但是,该脚本位于已安装的稀疏包中。阅读完此页面后,我卸载了文件系统,并查看了包中的内容:那里有一个名为“ token”的文件,其中设置了“ com.apple.quarantine” xattr。一旦删除了xattr并重新安装了稀疏的捆绑文件系统,Perl脚本的“错误解释器”问题就消失了。
李·约翰逊

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.