如何覆盖我的 shell (Oh My Zsh) 中的别名?

Far*_*had 8 zsh alias oh-my-zsh

我想为我的 ls 命令添加别名,但它有一个先前定义的别名,我相信它在我的定义之前首先被调用!我使用 .zshrc 来定义我的别名,这就是我所做的:

alias ls="ls --classify --almost-all --group-directories-first"

这是别名命令的输出:

$ alias | grep "ls="
ls='ls --color=tty'
Run Code Online (Sandbox Code Playgroud)

是否有任何可能的操作来查看另一个别名的定义位置?或者用新的覆盖它?

注意:我使用 ZSH,并且我已经在 .profile 和我知道可能有帮助的其他相关文件中搜索了它。如果有任何文件需要我检查,请评论。

Gil*_*il' 15

alias命令用相同的名称覆盖以前的别名。因此,一般来说,如果您希望别名覆盖 zsh 框架定义的别名,请将它们放在.zshrc. 其他诸如函数定义、变量赋值、键绑定等也是如此。一般来说,最新的定义获胜。

\n

\xe2\x80\x9clatest 定义胜过\xe2\x80\x9d 的一个边缘情况是,它只是同类对象的最新定义。特别是,别名、函数和外部命令是不同类型的对象,例如在定义同名别名后定义函数不会覆盖别名。你需要unalias先打电话。foo () { \xe2\x80\xa6\xc2\xa0}(另请注意,当is 是别名时,语法foo会扩展别名 \xe2\x80\x94\xc2\xa0 确保unalias首先,或使用function foo { \xe2\x80\xa6\xc2\xa0}语法。)

\n

有时,可以通过挂钩函数在运行时覆盖设置。例如,在进入或离开版本控制目录时,帮助进行版本控制的框架通常会更改变量以及可能的别名或函数。发生这种情况时,您必须修改现有的挂钩,或者在您不完全喜欢的挂钩之后运行您自己的挂钩。

\n
\n

如果您无法确定别名的设置位置,请运行script -c \'zsh -x\',然后键入exit。这将创建一个名为 的文件,typescript其中包含 zsh 在初始化期间运行的所有命令的日志。在该文件中,搜索alias ls=. (也可能是类似的东西alias foo=bar ls=whatever。)

\n