假设我有以下别名。
alias pwd_alias='echo `pwd`'
此别名不是“动态的”。pwd
它会在 shell 启动后立即进行评估。反正有没有延迟对滴答声中的表达式的评估,直到别名的运行时?
你真正想要的是一个函数,而不是别名。
pwd_alias() {
echo "$PWD"
}
别名只不过是替换文本而已。任何具有复杂性的东西都需要一个函数。
正如 jordanm 所说,别名只不过是替换文本而已。
如果您希望 echo 的参数是由 bash 扩展的 pwd 的输出,那么我不明白您的问题。
如果您希望 echo 的参数是 `pwd` 并保留反引号,这确实是可能的,例如:
alias a="echo '\`pwd\`'"
所以,如果不是 echo 你有一些东西在它自己的运行时做反引号扩展,也许这就是你想要的。
我不相信您可以更改在 shell 启动时发生的评估。由于创建别名的过程是在 shell 启动时运行的,因此pwd
会对其进行评估。您可以简单地将别名更改为仅在没有反引号的情况下pwd
作为pwd
输出运行而无需回显。解决此问题的一种简单方法是,如果您不希望更改为使用别名,则在路径中从使用别名更改为 shell 脚本。
#!/bin/bash
pwd