【问题标题】:Where's the PATH variable stored if .zshrc doesn't exist?如果 .zshrc 不存在,PATH 变量存储在哪里?
【发布时间】:2021-07-23 13:13:28
【问题描述】:

我默认使用 zsh。我也对环境变量感到不舒服,并试图了解它。

最近我为我的 PATH 变量添加了一个路径,但注意到我的 home(~/) 目录中不存在 .zshrc。我可以回显我的路径变量,并且路径已被添加:

如果 .zshrc 不存在,PATH 变量存储在哪里?

操作系统:大苏尔

【问题讨论】:

  • macOS Big Sur(和其他版本的 macOS)中,默认 系统文件 提供默认 @987654321 @ 是 /private/etc/paths。还有一些 applications/utilities 将写入的/private/etc/paths.d directory 将其 path 添加到path (@987654325 @)。在我的$HOME 目录 中,我有一个.zprofile 文件,我在其中添加了默认的path
  • 请注意,/etc/paths/etc/paths.d/ 没有被隐式使用。 /etc/profile (可能)首先获取源,并评估 /usr/libexec/path_helper 的输出,后者从这些文件中读取以产生其输出。
  • @papekoja:环境变量不存储在文件中,它们存储在进程的环境中,顾名思义,它们继承给子进程。如果没有人在环境中设置变量,则该变量不存在。 PATH 也不例外。 Zsh 在启动过程中提供了几个文件,这些文件可能包含也可能不包含设置环境的代码。另请注意,即使将这样的代码放入 .zshrc 中,也并不意味着每个 zsh 都将包含该定义,因为 .zshrc 仅来自 interactive zsh。

标签: path environment-variables zsh zshrc


【解决方案1】:

shell 通常会从其父进程继承PATH。如果不存在 PATH env var,许多 shell 将调用 sysctl(USER_CS_PATH,...) 询问操作系统默认使用什么搜索路径。像 zsh 这样的 shell 还会读取其他初始化文件。来自man zsh的输出:

FILES
   $ZDOTDIR/.zshenv
   $ZDOTDIR/.zprofile
   $ZDOTDIR/.zshrc
   $ZDOTDIR/.zlogin
   $ZDOTDIR/.zlogout
   ${TMPPREFIX}*   (default is /tmp/zsh*)
   /etc/zshenv
   /etc/zprofile
   /etc/zshrc
   /etc/zlogin
   /etc/zlogout    (installation-specific - /etc is the default)

【讨论】:

    猜你喜欢
    • 2017-03-26
    • 2010-10-02
    • 2018-02-01
    • 2010-12-17
    • 2011-04-11
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多