swift - 从 Xcode 调试应用程序时,从终端命令获取相同的 PATH 环境变量?

标签 swift xcode macos shell command-line

如果我从 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/

相关文章:

swift - 多次错误 "failed to import bridging header"

ios - 旋转后如何调整相机纵横比?

swift - 调用中参数 'message' 缺少参数

ios - Sharekit Twitter 集成在 iOS 5 中崩溃

python - 升级到 Python 3 后是否应该手动安装所有系统范围的软件包?

objective-c - Cocoa 中的菜单栏按钮面板?

xcode - 如何为 NSTableView 单元格添加填充到单元格?

ios - Swift 中的递归数组操作

ios - 删除核心数据中的记录后无法删除索引处的表行

ios - Swift 5 NumberPad 扩展按钮无响应