通过 -c 传递命令时运行 .zshrc

通过 -c 传递命令时运行 .zshrc

我有一个通过 运行命令的脚本zsh -c。但是,zsh运行时,它似乎没有加载~/.zshrc

我明白存在登录 shell 标志,但zsh -lc <command>似乎也不起作用。

如何获取我的文件中定义的函数、别名和变量〜/.zshrc运行时填充zsh -c?

答案1

zsh不要.zshrc在非交互式 shell 中阅读,但zsh允许您调用交互式 shell 来运行脚本:

$ zsh -ic 'type f'
f is a shell function

或者您始终可以.zshrc手动获取:

$ zsh -c '. ~/.zshrc; type f'
f is a shell function

答案2

正如 cuonglm 所说,虽然zsh不会.zshrc在非交互式 shell 中加载,但它加载.zshenv。因此,如果您正在进行不需要 tty 的设置,例如配置您的$PATH,则可以(并且可能应该)在.zshenv.

来自zsh 文档:

.zshenv除非设置了 -f 选项,否则在 shell 的所有调用中都会获取该信息。它应该包含设置命令搜索路径的命令,以及其他重要的环境变量。.zshenv不应包含产生输出的命令或假设 shell 连接到 tty。

相关内容