如何在运行时而不是在执行〜/ .bashrc时(打开终端时)获得~/.bashrc
别名来评估$()
替换?
我经常运行此命令,以便为其添加别名:
svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff
但是,当我将其添加~/.bashrc
为别名时,我看到评估被硬编码为它们在打开终端时所具有的值:
$ alias
alias svnbranch='svn diff -r 178184:HEAD svn+ssh://branches/t4252 | colordiff'
如果我在其中打开终端,~
则会收到错误消息:
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
svn: E155007: '/home/dotancohen' is not a working copy
$ alias
alias svnbranch='svn diff -r :HEAD | colordiff'
$
我已经尝试了中的别名的这两种变体~/.bashrc
,它们都具有相同的效果(正如我预期的那样):
alias svnbranch="svn diff -r $(svn info | grep ^Revision | awk {'print $2'}):HEAD $(svn info | grep ^URL | awk {'print $2'}) | colordiff"
alias svnbranch="svn diff -r `svn info | grep ^Revision | awk {'print $2'}`:HEAD `svn info | grep ^URL | awk {'print $2'}` | colordiff"
如何在运行时获取~/.bashrc
别名以评估$()
替换?
此外,如何在Google中搜索这种情况?我曾尝试在Google上搜索“ bashrc替换”,“ bashrc惰性替换”和其他关键短语,但对于我觉得应该是一个足够普遍的问题来查找信息,我一无所获。
@WarrenYoung:您是正确的,此特定实例可以是脚本。但是,我仍然想知道答案,因为我确实更喜欢将别名用于其他事物,并且我一定会碰到这个。我可以将您的问题概括为“当任何东西都可能是脚本时,为什么Bash支持别名”。
—
dotancohen
为什么要下票?我该如何改善这个问题?我提供了示例,失败的尝试,甚至是我尝试搜索的关键字短语。
—
dotancohen
@dotancohen:我认为您应该单独询问。我会在这里给出部分答案:
—
沃伦·杨
alias cdp="cd ~/projects"
。在Shell脚本中无法做到这一点。
$HOME/bin
,PATH
如果您有这样的目录,大多数* ix类型的系统都会放入。