从bash手册
有关别名的定义和使用的规则有些混乱。在执行该行中的任何命令之前,Bash总是读取至少一行完整的输入。读取命令时将扩展别名,而不是在执行时将别名扩展。因此,与另一条命令在同一行上出现的别名定义在读取下一行输入之前不会生效。该行中别名定义之后的命令不受新别名的影响。执行功能时,此行为也是一个问题。 读取函数定义时会扩展别名,而不是在执行函数时会扩展别名,因为函数定义本身就是复合命令。作为结果, 在函数中定义的别名只有在执行该函数之后才可用。为安全起见,请始终将别名定义放在单独的行上,并且不要在复合命令中使用别名。
似乎两个句子“在读取函数定义时展开别名,而不是在执行函数时展开”和“在函数执行之后才可用的函数中定义的别名”似乎是相反的。
您能分别解释它们的意思吗?
好问题!我今天学了新东西。我实际上学到了两件事:1)在读取函数def时有关别名扩展的信息,以及2)我应该真正认真阅读bash手册(我以为我已经做过,但显然没有^^ )
—
Olivier Dulac
主要问题是,任何人都应该在非交互模式下使用别名吗?这就是函数的作用,而别名只会使脚本编写更容易出错。实际上,我从来不需要上面的信息,因为我只
—
Orion
.bashrc
在最顶层的文件中遇到过别名。