我正在尝试设置点文件/配置。
我想要实现的目标之一是,无论我在哪里克隆点文件,我都可以自动拥有像
updateDotfiles
这样的别名,它将提取最新的更改。
为了实现这一目标,我尝试将
export DOTFILES_PATH=${0:P:h}
放入我的 .zshrc
中,以便我可以自动检测到我的 dotfiles 文件夹的路径。
如果我运行
source ~/.zshrc
(这是一个符号链接),这完全按照我想要的方式工作。我注意到,当我第一次打开新的终端选项卡/窗口时,${0:P:h}
解析到错误的位置。如果我从中删除 :h
并回显结果,我会得到 /Users/me/-zsh
然后如果我运行 source ~/.zshrc
我会得到 /Users/me/dotfiles-and-utils/.zshrc
我在这里缺少什么吗?如何让它同时适用于新窗口和单个源运行?
如果相关的话,我正在使用 iTerm2 和 oh-my-zsh
我遇到了以下问答,这让我朝着正确的方向前进(我不会假装理解它到底在做什么)https://unix.stackexchange.com/questions/249606/get-full-path-of -当前-zsh-启动文件-e-g-zshrc-或-zshenv
使用 ChatGPT 我设法调整它以按照我想要的方式工作,解决方案是使用
DOTFILES_PATH=$(dirname $(realpath ${(%):-%N}))
realPath
解析您设置的任何符号链接
就我而言,我想要存储 zshrc 文件的目录,因此使用
dirname