【发布时间】:2023-04-05 04:40:01
【问题描述】:
看起来 xcode 的 $PATH 环境设置与我的用户 shell 环境不同。
xcode 从哪里获取 $PATH 设置以及附加到搜索路径的最佳方式是什么?
【问题讨论】:
看起来 xcode 的 $PATH 环境设置与我的用户 shell 环境不同。
xcode 从哪里获取 $PATH 设置以及附加到搜索路径的最佳方式是什么?
【问题讨论】:
如果您正在编写 Run Shell Script 构建阶段,您可以这样做:
PATH=${PATH}:/opt/local/bin
或脚本内容中的任何内容。
【讨论】:
PATH=${PATH}:/usr/local/var/rbenv/shims
这仅适用于 OSX 10.7 及更早版本。
XCode 以与其他 OS X 进程相同的方式从 ~/.MacOSX/environment.plist 获取其环境变量。
查看developer.apple.com/qa/qa2001/qa1067.html了解如何设置的详细信息。
【讨论】:
在 Xcode 5 中,您可以将 PATH 作为变量添加到目标或项目设置中。
+符号的自定义变量PATH 并添加您的首选值(例如,/usr/local/bin 用于默认安装自制软件。【讨论】:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin,Xcode 实际上会将其设置为/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin。如果您希望 PATH 覆盖 Xcode,这很不幸,但如果您只想将 /usr/local/bin 或其他目录添加到 PATH,这实际上是一个很好的解决方案。
如果您专门谈论executable search path environment variable named PATH,那么有几个地方设置了它:
~/.cshrc、~/.profile、~/.bash_profile 等。environment.plist 文件中。gdb uses。我相信如果存在,gdb 会从~/.gdbinit 读取命令。【讨论】:
这是对 macOS 和 Xcode 更高版本的更新,因为事情发生了变化。这是 Xcode 11.0 和 macOS 10.14
最大的问题是 ~/.MacOSX/environment.plist 现在无法读取。
这意味着如果在构建中您需要 PATH 集,例如对于外部构建并且它们运行可执行文件,没有简单的解决方案。 /etc/paths 似乎也没有被读取。
解决方案如@GhostLyrics answer 中那样在 Build Settings 中添加 PATH 变量。然而,正如 cmets 中所指出的,Xcode 不仅会使用该值,还会在此之前放置自己的值。它还进行了直接的文本替换,因此您还需要添加 PATH 使用的分隔符,即:(冒号)。我添加的值是:opt/local/bin 我还发现您只能针对目标执行此操作,而不能在项目级别执行此操作。
这是this answer中的简单案例
PATH=${PATH}:/opt/local/bin
或脚本内容中的任何内容。
或者将此更改放在您的非登录 shell 启动文件中,例如~/.bashrc ~/.zshrc
这是在运行部分的架构中完成的。 按照此处答案中的说明在环境变量中设置 PATH 。请注意,我没有尝试过,我不确定 PATH 需要设置多少。
【讨论】:
这些答案有些混乱,因为他们中的一些人试图解决由 Xcode 运行的构建可执行文件的$PATH。但问题是关于 Xcode,暗示它与构建过程本身有关。
例如,在运行 Homebrew 安装的可执行文件的构建阶段运行脚本步骤中。对构建过程进行硬编码以包含特定于一台构建机器的路径并不是一个好主意(新的 macOS 版本出现,新的开发人员加入团队等)
问题有多层:
bashrc/zshrc/profile 中更改 $PATH 会在 shell 会话中生效,但不会在 macOS 应用程序中生效要解决这个问题,您可以使用以下方法为应用程序设置 PATH:
sudo launchctl config user path $PATH
然后您需要重新启动计算机才能使更改生效。如果您更改 $PATH,则需要再次运行此程序。
(来自a comment on GitHub。)
$PATH,取而代之的是自己清理过的值这可以通过更改用户默认值来解决。这可能有一些风险,因为 Xcode 进行这种清理是为了确保使用它自己的构建工具,如果你在其他地方有同名的可执行文件,它们可能会被运行。警告购买者!
defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
(此部分来自this answer。)
【讨论】:
Xcode 不会查看您的 shell 路径环境。
看看 NSProcessInfo;并做一个 NSLog 看看会发生什么。
如果您想要一个应用到所有图形程序的路径,您需要设置 ~/.MacOSX/environment.plist。如前所述。
设置环境变量的推荐方法实际上是在 /etc/paths 和 etc/paths.d 中,尽管 Xcode 也没有选择这些。
我问过这个here。
【讨论】:
在 XCode 7 中没有什么对我有用。
您需要在 XCode 方案中设置 PATH 变量。
在以下位置找到了解决方案: Where to set environment variables for app?
【讨论】:
尝试从终端打开您的 xcode 项目,这对我有用:open some.xcodeproj
而不是打开 xcode 然后加载项目或双击它。
我知道……傻
【讨论】: