Applescript 在应用程序安装期间找不到 sed

Applescript 在应用程序安装期间找不到 sed

我正在尝试安装一个应用程序,但安装程序失败并显示以下错误消息:

sh:sed:未找到命令

对话框中有一个“编辑和确定”按钮,因此我单击“编辑”按钮,这将启动 AppleScript 编辑器以显示正在执行的脚本。从编辑器内部运行它也不起作用。

使用 sed 编写的脚本的第一行是

设置 currdir_modified 来执行 shell 脚本(“echo " & currdir & " | sed 's/ /\\ /g'”)

我到终端来确保 sed 可用,而且它在 /usr/bin 中。

这听起来像是路径问题,但我不知道接下来该怎么办。我该怎么做才能进一步排除故障或解决这个问题?

我已在另一台运行相同 OS X 版本的 Mac 上成功安装了此应用程序,因此它特定于我的 Mac,并且应用程序的支持不再提供任何帮助,因为这是我的 Mac 的问题,而不是他们的问题。

答案1

似乎您已经修改了 GUI 应用程序(包括大多数 AppleScript 运行程序)继承的默认 PATH。如果您只想快速修复,您应该能够按照 Hasaan Chop 的指示进行操作:只需在 AppleScript 代码中更改为sed/usr/bin/sed保存它,然后重新运行安装程序(尽管您可能会遇到其他命令的类似问题)。

如果您想修复导致默认 PATH 缺失的问题/usr/bin,那么您将需要稍微研究一下以找出问题的根源。

请注意(正如你间接发现的),应用程序看到的“默认 PATH”与“登录”shell 启动的 PATH 不同。终端会自行建立。伯恩家族的贝壳(狂欢等)将运行,/etc/profile这(通常)会将 PATH 完全重置为新值(每个用户的 shell 初始化文件通常会将各种其他目录添加到 PATH)。这里的要点是shell 初始化文件与应用程序看到的 PATH 无关(也有例外(例如水上麦克斯) 但很少见。

  • 自定义默认环境变量的常见位置是~/.MacOSX/environment.plist

    该文件在登录时读取,用于为当前登录会话中启动的应用程序添加新的(或覆盖现有的)环境变量。

    要查看和/或编辑此文件,您可以使用专门的工具,例如RC环境(推荐)。
    或者由于此文件是清单文件,您可以使用 属性列表编辑器(来自开发工具),或者命令行工具,如 默认值, 或者 PlistBuddy。如果文件是 XML 格式(很可能),那么您甚至可以使用纯文本编辑器。

  • 自定义默认环境变量的另一个可能位置是启动配置文件。

    这些文件可以包含任何启动控制子命令,包括setenvunsetenv子命令,它们可以改变子进程继承的环境。

    可以在 中针对每个用户进行定制~/.launchd.conf。 系统范围的定制可以在 中完成/etc/launchd.conf

如果您发现其中一个文件正在操作 PATH 环境变量,那么您应该摆脱 PATH 操作(以让默认值传递给应用程序)或将低级默认目录(例如/usr/bin:/bin:/usr/sbin:/sbin)添加到您需要在 PATH 中拥有的任何自定义目录中。

如果您最终对每个用户文件(~/.MacOSX/environment.plist~/.launchd.conf)进行了更改,那么使更改生效的最简单方法是注销(完全注销,而不仅仅是快速用户切换)并登录。如果您必须修改系统范围的文件,那么最简单的方法就是重新启动。从技术上讲,无需重新启动或注销即可开始使用新值,这留给读者作为“练习”。


以下是关于该行 AppleScript 代码的含义的题外话,它与 PATH 问题无关。

该代码行还有另一个潜在错误(无法正确地将字符串值引用currdir到 shell 代码中)。该行本身应该在字符串中的每个空格字符前添加反斜杠。这样做最可能的原因是可以将生成的字符串直接插入到另一位 shell 代码中。问题是,如果 shell 代码要正确处理任何字符串,则还有许多其他字符需要以相同的方式转义。这两个问题(实际上它们是同一个问题)都可以通过使用 AppleScript 的quoted form of命令轻松解决。脚本没有使用这一事实quoted form of表明缺乏经验,这让我担心脚本可能还做错了什么。

答案2

使用 sed 二进制文件的绝对路径,而不仅仅是命令名称。

相关内容