说我有以下别名。
alias pwd_alias='echo `pwd`'
这个别名不是“动态的”。一旦shell启动,它就会评估pwd
。无论如何,在别名的运行时间之前,是否延迟了对滴答中表达式的求值?
答案 0 :(得分:32)
你真正想要的是一个功能,而不是别名。
pwd_alias() {
echo "$PWD"
}
别名只是替换文本。任何复杂的东西都需要一个功能。
答案 1 :(得分:1)
正如乔丹所说,别名只会取代文字
如果你希望echo的参数是由bash扩展的pwd的输出,那么我不明白你的问题
如果你想将echo的参数保持为“pwd”并保留反引号,那么确实可能,例如:
alias a="echo '\`pwd\`'"
所以,如果不是echo,你可以在自己的运行时进行反引号扩展,也许这就是你想要的。
答案 2 :(得分:0)
我不相信你可以在shell启动时更改评估。由于创建别名的过程是在shell启动时运行的,因此评估pwd
。您可以简单地将别名更改为仅运行pwd
,而不需要将pwd
输出作为后退,而无需回显。解决此问题的一种简单方法是,如果您不希望更改使用别名,请在路径中使用别名更改为shell脚本。
#!/bin/bash
pwd