【问题标题】:where is $PATH set in xcode?xcode 中的 $PATH 设置在哪里?
【发布时间】:2023-04-05 04:40:01
【问题描述】:

看起来 xcode 的 $PATH 环境设置与我的用户 shell 环境不同。

xcode 从哪里获取 $PATH 设置以及附加到搜索路径的最佳方式是什么?

【问题讨论】:

    标签: xcode path


    【解决方案1】:

    如果您正在编写 Run Shell Script 构建阶段,您可以这样做:

    PATH=${PATH}:/opt/local/bin
    

    或脚本内容中的任何内容。

    【讨论】:

    • 谢谢,这是我目前正在做的,但我希望找到一种适用于整个构建过程的“全局”方式
    • 这对于例如红宝石脚本。尤其是当你在路径中需要 rbenv 时。
    • @tcurdt 这对我有用:PATH=${PATH}:/usr/local/var/rbenv/shims
    【解决方案2】:

    最简单的解决方案是在 Xcode 中添加 PATH 变量。

    PATH=${PATH}:/usr/local/bin

    【讨论】:

    • 如果有人想知道这是在哪里找到的,您可以点击“编辑方案”。 :D
    • 对我来说,这是在菜单中的“产品 > 方案 > 编辑方案”下
    【解决方案3】:

    这仅适用于 OSX 10.7 及更早版本。

    XCode 以与其他 OS X 进程相同的方式从 ~/.MacOSX/environment.plist 获取其环境变量。

    查看developer.apple.com/qa/qa2001/qa1067.html了解如何设置的详细信息。

    【讨论】:

    • 嗯...我没有这样的文件。是否有适用于所有用户的全球版本?
    • 该文件在某些​​方面非常有用,但似乎不适用于 PATH 变量。
    【解决方案4】:

    在 Xcode 5 中,您可以将 PATH 作为变量添加到目标或项目设置中。

    1. 在页面顶部添加带有+符号的自定义变量
    2. 将变量的名称编辑为 PATH 并添加您的首选值(例如,/usr/local/bin 用于默认安装自制软件。

    【讨论】:

    • 我刚刚用 Xcode 6 尝试了这个解决方案,似乎 IDE 默默地用 Xcode.app 文件夹的值覆盖了 PATH 变量。所以这不再起作用了。是否有任何替代解决方案或方法可以强制 Xcode 使用此处设置的 PATH?
    • Xcode 6 在您之前添加了自己的工具路径。因此,例如,如果您说您希望 PATH 为/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,这实际上是一个很好的解决方案。
    【解决方案5】:

    如果您专门谈论executable search path environment variable named PATH,那么有几个地方设置了它:

    • 如果是命令行工具,则在your shell settings 中。根据您的 shell,这可能是 ~/.cshrc~/.profile~/.bash_profile 等。
    • 在前面提到的environment.plist 文件中。
    • 如果您在调试器中,则为whatever gdb uses。我相信如果存在,gdb 会从~/.gdbinit 读取命令。
    • XCode 允许您在 Info page for executables 中设置环境变量。

    【讨论】:

    • 如果您需要将搜索路径传递给试图在 /usr/local/bin 等位置查找可执行文件的脚本,这将无济于事。这是 Xcode 对外部构建目标支持的缺陷(撰写本文时 Xcode 4.2)。
    【解决方案6】:

    这是对 macOS 和 Xcode 更高版本的更新,因为事情发生了变化。这是 Xcode 11.0 和 macOS 10.14

    最大的问题是 ~/.MacOSX/environment.plist 现在无法读取。

    1. 构建设置

    这意味着如果在构建中您需要 PATH 集,例如对于外部构建并且它们运行可执行文件,没有简单的解决方案。 /etc/paths 似乎也没有被读取。

    解决方案如@GhostLyrics answer 中那样在 Build Settings 中添加 PATH 变量。然而,正如 cmets 中所指出的,Xcode 不仅会使用该值,还会在此之前放置自己的值。它还进行了直接的文本替换,因此您还需要添加 PATH 使用的分隔符,即:(冒号)。我添加的值是:opt/local/bin 我还发现您只能针对目标执行此操作,而不能在项目级别执行此操作。

    1. 运行 Shell 脚本

    这是this answer中的简单案例

    PATH=${PATH}:/opt/local/bin
    

    或脚本内容中的任何内容。

    或者将此更改放在您的非登录 shell 启动文件中,例如~/.bashrc ~/.zshrc

    1. 运行可执行文件

    这是在运行部分的架构中完成的。 按照此处答案中的说明在环境变量中设置 PATH 。请注意,我没有尝试过,我不确定 PATH 需要设置多少。

    【讨论】:

      【解决方案7】:

      这些答案有些混乱,因为他们中的一些人试图解决由 Xcode 运行的构建可执行文件的$PATH。但问题是关于 Xcode,暗示它与构建过程本身有关。

      例如,在运行 Homebrew 安装的可执行文件的构建阶段运行脚本步骤中。对构建过程进行硬编码以包含特定于一台构建机器的路径并不是一个好主意(新的 macOS 版本出现,新的开发人员加入团队等)

      问题有多层:

      bashrc/zshrc/profile 中更改 $PATH 会在 shell 会话中生效,但不会在 macOS 应用程序中生效

      要解决这个问题,您可以使用以下方法为应用程序设置 PATH:

      sudo launchctl config user path $PATH
      

      然后您需要重新启动计算机才能使更改生效。如果您更改 $PATH,则需要再次运行此程序。

      (来自a comment on GitHub。)

      Xcode默认不使用系统$PATH,取而代之的是自己清理过的值

      这可以通过更改用户默认值来解决。这可能有一些风险,因为 Xcode 进行这种清理是为了确保使用它自己的构建工具,如果你在其他地方有同名的可执行文件,它们可能会被运行。警告购买者!

      defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO
      

      (此部分来自this answer。)

      【讨论】:

        【解决方案8】:

        Xcode 不会查看您的 shell 路径环境。

        看看 NSProcessInfo;并做一个 NSLog 看看会发生什么。

        如果您想要一个应用到所有图形程序的路径,您需要设置 ~/.MacOSX/environment.plist。如前所述。

        设置环境变量的推荐方法实际上是在 /etc/paths 和 etc/paths.d 中,尽管 Xcode 也没有选择这些。

        我问过这个here

        【讨论】:

          【解决方案9】:

          在 XCode 7 中没有什么对我有用。
          您需要在 XCode 方案中设置 PATH 变量。

          在以下位置找到了解决方案: Where to set environment variables for app?

          【讨论】:

            【解决方案10】:

            尝试从终端打开您的 xcode 项目,这对我有用:open some.xcodeproj

            而不是打开 xcode 然后加载项目或双击它。

            我知道……傻

            【讨论】:

            • 它不起作用。我猜在后台打开触发器打开
            猜你喜欢
            • 1970-01-01
            • 2013-08-20
            • 2016-10-07
            • 2017-10-08
            • 2011-12-01
            • 2016-10-05
            • 2014-09-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多