我试图将我的终端设置(iTerm2、zsh、oh-my-zsh、omz 主题)从旧 MacBook 转移到新 MacBook。
.zshrc
真实文件位于两台笔记本电脑之间共享的 Dropbox 中,并且每台笔记本电脑都有一个~/.zshrc
指向 Dropbox 文件的符号链接。
使用此设置,我在新笔记本电脑中遇到了此错误:
someuser@Someusers-MacBook-Pro ~ % source ~/.zshrc
/Users/someuser/.zshrc:source:78: no such file or directory: ~/.oh-my-zsh/oh-my-zsh.sh
/Users/someuser/.zshrc:source:112: no such file or directory: /Users/someuser/.rcsource
someuser@Someusers-MacBook-Pro ~ % ls ~/.oh-my-zsh/oh-my-zsh.sh
/Users/someuser/.oh-my-zsh/oh-my-zsh.sh
someuser@Someusers-MacBook-Pro ~ % cat ~/.zshrc | grep oh-my-zsh
# Path to your oh-my-zsh installation.
export ZSH="~/.oh-my-zsh"
# load a random theme each time oh-my-zsh is loaded, in which case,
source $ZSH/oh-my-zsh.sh
如您所见,输出没有任何意义。它抱怨无法找到,~/.oh-my-zsh/oh-my-zsh.sh
当我ls
在该路径上找到时,它显示它存在。
答案1
~
是您的主目录的 shell 简写,不是实际有效路径的一部分。在某些情况下,shell 会扩展~
为实际路径,但如果在引号中则不会。只需替换此内容:
export ZSH="~/.oh-my-zsh" # Doesn't work because ~ is quoted
使用以下任一方法:
export ZSH=~/.oh-my-zsh # No quotes, so ~ expands to home directory path
或这个:
export ZSH="$HOME/.oh-my-zsh" # Parameters do expand in double-quotes
答案2
~
参数中的波浪号默认不展开,只有GLOB_SUBST
设置选项时才会展开,请参阅man zshoptions
。也许此选项隐藏在旧的(全局)配置中的某个地方,例如/etc/zshrc
。
举几个例子:
$ foo="~/.zshrc"
$ ls $foo
ls: cannot access '~/.zshrc': No such file or directory
$ ls ${~foo}
/home/user/.zshrc
$ setopt GLOB_SUBST
$ ls $foo
/home/user/.zshrc
该语法${~foo}
暂时启用GLOB_SUBST
当前扩展,请PARAMETER EXPANSION
参阅man zshexpn
。
长话短说:最简单的解决方案是~
在行中用export ZSH="~/.oh-my-zsh"
替换/Users/someuser
。