zsh在函数中临时禁用别名

zsh在函数中临时禁用别名,zsh,Zsh,例如,我觉得zsh会扩展别名,即使它是在函数中调用的 alias abc='echo abc' function fabc(){abc} 是否可以在此函数中禁用别名扩展 还有一个相关问题:是否可以在整个交互式shell中禁用别名扩展?您可以使用禁用特定别名 unalias abc 或所有具有 unalias-a 另一种解决方案是强制命令不使用带反斜杠的别名 \abc 这个问题在函数中使用时更难。。。从中可以看出,您无法在函数中定义或取消定义别名 别名在读取函数定义时展开,而不是在 函数被

例如,我觉得
zsh
会扩展别名,即使它是在函数中调用的

alias abc='echo abc'
function fabc(){abc}
是否可以在此函数中禁用别名扩展


还有一个相关问题:是否可以在整个交互式shell中禁用别名扩展?

您可以使用禁用特定别名

unalias abc
或所有具有

unalias-a
另一种解决方案是强制命令不使用带反斜杠的别名

\abc
这个问题在函数中使用时更难。。。从中可以看出,您无法在函数中定义或取消定义别名

别名在读取函数定义时展开,而不是在 函数被执行,因为函数定义本身就是一个 复合命令

所以你可能想做一些类似的事情

alias abc='echo abc'
MyAlias=$(别名-L)
尤纳利亚斯-a
函数fabc(){
abc
}
eval$myalias;取消设置我的别名
fabc
abc

您可以使用禁用特定别名

unalias abc
或所有具有

unalias-a
另一种解决方案是强制命令不使用带反斜杠的别名

\abc
这个问题在函数中使用时更难。。。从中可以看出,您无法在函数中定义或取消定义别名

别名在读取函数定义时展开,而不是在 函数被执行,因为函数定义本身就是一个 复合命令

所以你可能想做一些类似的事情

alias abc='echo abc'
MyAlias=$(别名-L)
尤纳利亚斯-a
函数fabc(){
abc
}
eval$myalias;取消设置我的别名
fabc
abc

前两种选择是不可逆的。我只想在函数中暂时禁用它们。如果加载的插件使用了某个我碰巧设置了别名的命令,它会影响插件的行为吗?如何避免这种情况?您可以将子shell与
()
一起使用,或者如图所示保存别名。前两种选择是不可逆的。我只想在函数中暂时禁用它们。如果加载的插件使用了某个我碰巧设置了别名的命令,它会影响插件的行为吗?如何避免这种情况?您可以使用带有
()
的子shell,或者保存别名,如图所示。