Mac: export as CLI vs. export in ~/.zshrc



当我试图为Node设置最大内存时,我想到了它。我被告知在终端输入export NODE_OPTIONS=--max_old_space_size=4096,这一切都解决了。然而,当我关闭终端并再次打开它时,环境选项消失了。我必须重新输入它来设置环境。

之后,我想知道是否可以将该选项写入~/。zshrc文件,我发现它一次性工作。

所以,我在想,如果这只是一个巧合,或者它是否像导出。/zshrc文件中的导出命令

的永久版本

.zshrc只是一个由每个交互式shell获取的文件,就像您在命令行上输入命令一样。

.zprofile文件是设置环境变量的较好选择。它仅来自登录shell,但任何非登录交互式shell最终都可能从某些登录shell继承其环境。

不要忘记.zshrc仅用于交互式贝壳。如果您也需要在非交互式shell中进行设置,那么~/.zshenv将是更好的选择。

无论哪种情况,你都必须意识到以下后果:

如果您在当前shell中手动设置变量,目的是覆盖在dotfile中完成的设置,创建子shell将再次恢复从dotfile的设置,覆盖您的当前设置。

如果你不喜欢这个效果,你可以在~/.zprofile里面设置这个值。这将只在登录shell中执行。(当然继承给所有子进程)。只有当您创建了一个新的login-zsh作为子shell时,这个文件才会被重新引用,并且会销毁您在调用shell中所做的可能的手动更改。

另一种可能是使用~/.zshenv,但只在它还没有值的情况下设置该值:

: ${NODE_OPTIONS:=--max_old_space_size=4096}
export NODE_OPTIONS

尽管这使用了两行而不是只有一行,但这是我推荐的方法,因为它允许您在需要时覆盖所有子shell的值,但仍然确保在没有覆盖的情况下设置合适的默认值。

最新更新