7

我在 MacOS 中遇到了一个奇怪的 PATH 环境变量问题,我花了几个小时来调试:

  • 前段时间,当我尝试修复 IntelliJ 终端 PATH 变量与 iTerm 不同的问题时,我按照在线文章执行了以下操作:

    sudo launchctl config user path $PATH

  • 显然,该命令在某个时间点设置并保留 PATH 变量的值,并且即使在我启动新的 zsh 会话时加载我的 shell 之前,该变量也会被加载。直到最近我才意识到这个问题,因为我删除了我zshrc的一些路径位置设置并且PATH变量仍然没有反映

  • 我的问题是该命令将PATH变量值存储在哪里?以及它如何在我的 shell 加载之前加载该值?

(对于想知道我如何解决问题的人:我再次执行命令将路径设置为空值sudo launchctl config user path '':)

4

1 回答 1

2

命令sudo launchctl config user path <...>更新:/private/var/db/com.apple.xpc.launchd/config/user.plist

$ cat /private/var/db/com.apple.xpc.launchd/config/user.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PathEnvironmentVariable</key>
    <string>/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
</dict>
</plist>

在我的系统上测试,目前是 macOS 12.1 (AppleSilicon)。您可以替换usersystem对系统范围的首选项进行操作。两者都需要 sudo,这很奇怪。

您可以通过以下方式查询launchd的当前设置:

launchctl getenv PATH

相关:您还可以通过执行查询默认值: PATH

sysctl user.cs_path
于 2021-12-28T17:29:01.087 回答