我有一个通过 运行命令的脚本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。