防止bash别名在shell start处评估语句

时间:2012-11-06 23:17:16

标签: bash alias

说我有以下别名。

alias pwd_alias='echo `pwd`'

这个别名不是“动态的”。一旦shell启动,它就会评估pwd。无论如何,在别名的运行时间之前,是否延迟了对滴答中表达式的求值?

3 个答案:

答案 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