如果我从 Xcode 调试命令行应用程序,我会得到与从终端 session 运行相同应用程序不同的 $PATH。
例如,当从终端运行时:
$env | grep "PATH="
//output: PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
...
从 Xcode 调试 session :
let environment = ProcessInfo.processInfo.environment
print(environment["PATH"] ?? "No PATH found")
//output: /Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin
因此,某些命令行应用程序在调试时不可用。
如何在 Xcode 调试 session 中获取终端窗口 $PATH 环境变量?
最佳答案
正如 Martin R 在他的评论中所说,传递给 GUI 程序的环境与 shell 应用程序使用的环境不同。
我从未找到解决该问题的简单方法。我怀疑环境路径是使用 launchctl 设置的,或者是向 GUI 应用程序提供默认路径。
最后,我最终更改了类 Process (Swift) 使用的环境。虽然并不完美(而且肯定比我希望的更复杂),但它确实有效。您可以在以下位置找到我使用的整个实现:GitHub
关于swift - 从 Xcode 调试应用程序时,从终端命令获取相同的 PATH 环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55969943/