有没有办法获取当前正在处理的 zsh 启动文件的完整路径(例如 zshrc 或 zshenv)?换句话说,假设我有一个 zshrc 文件,可以位于/usr/local/etc/zshrc
或$HOME/.zshrc
。在这个 zshrc 文件中,我需要根据其位置执行不同的操作。通常的方法$0
不起作用,因为它包含 zsh 二进制文件的路径而不是 zshrc 脚本的路径。
答案1
通过提示扩展,%N
可以为您提供(当前脚本/源文件/函数)。
所以你可以这样做:
print -P %N
或者从 获取它${(%):-%N}
。
另请参阅$funcsourcetrace
调用堆栈文件。