【问题标题】:Get the same PATH environment variable from a terminal command when debugging an app from Xcode?从 Xcode 调试应用程序时,从终端命令获取相同的 PATH 环境变量?
【发布时间】:2019-09-22 00:11:57
【问题描述】:

如果我从 Xcode 调试命令行应用程序,我得到的 $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 调试会话:

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 调试会话中获取终端窗口 $PATH 环境变量?

【问题讨论】:

标签: swift xcode macos shell command-line


【解决方案1】:

正如 Martin R 在他的评论中所说,传递给 GUI 程序的环境与 shell 应用程序使用的环境不同。

我从未找到解决问题的简单方法。我怀疑环境路径是使用 launchctl 设置的,或者为 GUI 应用程序提供了默认值。

最后,我最终更改了 Process (Swift) 类使用的环境。虽然并不完美(而且肯定比我希望的更复杂),但它确实有效。您可以在以下位置找到我使用的整个实现:GitHub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-18
    • 2015-01-31
    • 2019-06-30
    • 2012-06-19
    • 2013-01-28
    • 2018-11-10
    • 2012-06-13
    • 2021-02-15
    相关资源
    最近更新 更多