获得/垃圾箱/垃圾箱。。。。“未找到命令”;尝试从Flatter MacOS桌面应用程序调用shell脚本时

获得/垃圾箱/垃圾箱。。。。“未找到命令”;尝试从Flatter MacOS桌面应用程序调用shell脚本时,macos,flutter,zsh,macos-big-sur,flutter-desktop,Macos,Flutter,Zsh,Macos Big Sur,Flutter Desktop,可能更像是MacOS/zsh问题,而不是颤振问题。 错误消息是: /bin/sh: exiftool: command not found 我正在尝试从我的Flatter MacOS桌面应用程序调用exiftool ProcessResult processResult = Process.runSync('exiftool', params, runInShell: true); 参数只是文件的路径 我使用brew安装了exiftool。在/usr/local/bin中有一个指向它的符号链

可能更像是MacOS/zsh问题,而不是颤振问题。

错误消息是:

/bin/sh: exiftool: command not found
我正在尝试从我的Flatter MacOS桌面应用程序调用exiftool

ProcessResult processResult = Process.runSync('exiftool', params, runInShell: true);
参数只是文件的路径

我使用brew安装了exiftool。在/usr/local/bin中有一个指向它的符号链接/usr/local/bin位于路径中。我可以从终端调用exiftool,没有任何错误

我从Android Studio运行应用程序,只有在Android Studio在启动时启动并且它也启动应用程序时才会发生这种情况(我在重新启动时选中重新打开应用程序复选框)。如果我关闭应用程序和Android Studio并重新启动它们,它就会工作。

MacOS启动Android Studio时,环境是否可能没有完全设置好?有什么办法减轻这种情况吗


谢谢。

尝试使用exiftool的完整路径。应用程序启动时可能不会继承路径。在终端中运行
键入exiftool
以查找完整路径,然后在脚本中使用该路径。@kometen这会破坏应用程序的可移植性。我们的想法是能够在任何操作系统和计算机上使用它,而不管exiftool和其他工具的路径如何,只要它们位于PATH环境变量中。@MarkSetchell请参阅我对@kometen的回复。我知道我可以这样做,但那不是我想要的。看起来您的子进程运行了
/bin/sh
而不是
zsh
。若它在终端中工作,那个是因为您的路径在终端中设置不同。因此,如果您按照我的建议运行
键入exiftool
,那么您将发现您的路径上需要什么,然后您应该能够将该路径以及需要在其他平台上可移植的任何内容添加到您的
进程中。run()