zsh暂时禁用函数内的别名

时间:2019-01-23 02:30:45

标签: zsh

我认为zsh也会扩展别名,即使它在函数中被调用

alias abc='echo abc'
function fabc(){abc}

是否可以在此功能中禁用别名扩展?

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

1 个答案:

答案 0 :(得分:1)

您可以使用以下方式禁用特定的别名

unalias abc

或所有带有

的别名
unalias -a

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

\abc

在函数中使用时,此问题更加困难...从here看来,您无法在函数中定义或取消定义别名。

  

在读取函数定义时(而不是在   执行函数,因为函数定义本身就是一个   复合命令。

所以您可能想做类似的事情

alias abc='echo abc'

myaliases=$(alias -L)
unalias -a
function fabc(){
    abc
}
eval $myaliases; unset myaliases

fabc
abc