别名shell变量dereference

时间:2016-08-03 16:23:05

标签: shell alias dereference tcsh

我在路径中移动很多,并尝试使用别名集来最小化输入:

alias restore       'set restore=\!*; cd \$${restore}'
alias save          'setenv \!* `pwd`'

我正在使用tcsh;保存工作但恢复失败:

2% save x
2% cd
2% restore x
$x: No such file or directory.

我检查var(x)并且没关系,所以我没有解除引用权吗?

1 个答案:

答案 0 :(得分:0)

这有效:

alias restore ' cd ` echo $\!* ` '

您最初的尝试可以写得更好:

alias restore ' cd \$\!* '

这(和你原来的)不起作用,因为变量扩展需要先发生,在这种情况下没有变量扩展,因为$被转义。展开!*后,没有发生另一个变量扩展。

在我提出的解决方案中,我避免通过在子shell中运行$来转义echo,因此它可以正常工作。

为了确保您了解pushdpopd,对吧?对于大多数用户来说,这些用户非常有用且功能强大,但我可以在这里看到别名中的值。