当执行具有管理员权限的shell命令时,Applescript应用程序在10.9上挂起

时间:2013-10-23 16:30:46

标签: macos shell applescript admin osx-mavericks

我正在Applescript应用程序中执行以下行。

set POSIX_path to "/Applications/iPhoto.app"
do shell script "sudo rm -rfv " & quoted form of POSIX_path with administrator privileges

验证屏幕会弹出,但在验证应用程序后,执行此命令时会冻结。这个问题只发生在10.9。

当我将要删除的文件夹的权限设置为“每个人都可以读取和写入”时,它可以正常工作。

有没有人知道改变了什么?

编辑:当我通过检查du -shx /Applications/iMovie.app重复执行此脚本时,它会设法每次尝试删除更多文件。

$ open compiled-applescript.app/
$ du -shx /Applications/iMovie.app
1.4G    /Applications/iMovie.app
-- force quit AppleScript --
$ open compiled-applescript.app/
$ du -shx /Applications/iMovie.app
1.3G    /Applications/iMovie.app
-- force quit AppleScript --
$ open compiled-applescript.app/
$ du -shx /Applications/iMovie.app
1.0G    /Applications/iMovie.app

3 个答案:

答案 0 :(得分:2)

在OS X 10.9(13A603)上工作正常

set POSIX_path to "/Users/paragbafna/Desktop/untitled folder"
do shell script "sudo rm -rfv " & quoted form of POSIX_path with administrator privileges  

enter image description here

答案 1 :(得分:2)

  

有没有人知道改变了什么?

嗯,是的。守门人已经改变了,这可能是原因..

  

当我将要删除的文件夹的权限设置为“每个人都可以读取和写入”时,它可以正常工作。

您是从Finder还是使用chmod 0777的命令行执行此操作?后者可能会删除Finder未删除的一些属性。

您的计算机上选择了什么设置?

OSX - Security & Privacy settings

如果您有限制性设置,请尝试“随处”以查看是否解决了问题。如果这是原因,您可以:

  1. 安装了自定义命令行工具(例如MacPorts)或您自己编译的内容(因为这发生在3但不是所有计算机上,显然您不是“通用”用户)。
  2. 您的AppleScript不受信任,如果可能,您可以尝试签名,否则这可能会有效:
      

    如果用户想要运行被Gatekeeper阻止的应用程序,他们有几个选项。实际上,Gatekeeper可以通过让它运行所有应用程序来关闭。 高级用户可以选择删除隔离区属性,或使用spctl命令在安全评估策略子系统中添加新策略。 - TrendMicro - about Gatekeeper

  3. 最后的想法..检查您的磁盘权限,如果您使用它,重新安装Xcode,可能签名已损坏。
  4. 编写一个shell脚本,我不知道它是否只是删除一些文件,然后你绝对可以在shell脚本中执行,或者发表评论以告诉我你想要实现的目标。

答案 2 :(得分:1)

经过几天尝试解决这个问题,我终于找到了造成这个问题的原因。

这是rm-command的详细选项(-v)。离开它使应用程序再次完美无瑕。 也许Apple意外地引入了缓冲区溢出。我将根据我在Apple的bugtracker中创建的问题ID 15309626报告此情况。也许他们会修复它,直到第一个10.10 DP:D