从巴什手册上
关于别名的定义和使用的规则有些混乱。在执行该行上的任何命令之前,Bash总是读取至少一行完整的输入。别名是在读取命令时展开的,而不是在执行命令时展开的。因此,出现在同一行中的别名定义在读取下一行输入之前不会生效。该行中别名定义之后的命令不受新别名的影响。在执行函数时,此行为也是一个问题。别名是在读取函数定义时展开的,而不是在函数执行时展开的,因为函数定义本身就是一个复合命令。因此,在函数中定义的别名直到该函数执行之后才可用。为了安全起见,请始终将别名定义放在单独的行中,并且不要在复合命令中使用别名。
两个句子“在读取函数定义时扩展别名,而不是在函数执行时扩展”和“函数中定义的别名直到该函数执行之后才可用”这两个句子似乎相互矛盾。
你能分别解释一下它们的意思吗?
发布于 2023-01-06 10:21:23
你可以说(例如)
别名mvn="mvn -Dmaven.wagon.http.ssl.insecure=true $@“
IE您可以在定义中重复别名的名称,但是不能用函数来实现;bash只会堆栈溢出和死掉。
也许有办法解决这个问题,但是IDK到底是什么。
https://unix.stackexchange.com/questions/329994
复制相似问题