好的,我遇到类似的问题:-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年
您是否可以类似的方式在同一文件系统上运行其他程序?那是使用
—
cm2
chmod +x file.sh; ./file.sh
。也许该文件系统已通过“ noexec”标志挂载。
重写您的问题以仅询问如何告诉mount不使用隔离标志可能会有所帮助,因为您现在确定这是您的实际问题。另外,我不知道如何针对特定的卷禁用它,而是完全禁用隔离
—
houbysoft 2012年
defaults write com.apple.LaunchServices LSQuarantine -bool NO
。
好,我已经解决了。.dmg文件上设置了com.apple.quarantine xattr。我必须卸载它,清除xattr,然后重新安装dmg。GAH。@houbysoft:感谢您将其完全关闭的提示。
—
凯拉尔2012年