这是 zsh,但也许适用于其他 shell。
假设你在目录中/foo
,并且你
% find $PWD -name '.*'
它运行良好,结果来自/foo
。
现在(在/foo
)输入此
% alias crazy="find $PWD -name '.*'"
现在% crazy
你会看到相同的结果。一切都很好。
但是。比如在 Mac 中,输入你的.zshrc
# Let's see what happens:
% alias crazy="find $PWD -name '.*'"
现在,例如在 Mac 上,打开一个新的终端会话。在 Mac *nix 的情况下,它会这样做,实际上是在某个特定的默认目录中打开 zsh /blah/fattie
。
现在% cd /foo
输入crazy
事实上。您获得的结果来自 的结果/blah/fattie
。
如果你想让“疯狂”按预期工作,你必须这样做
% alias crazy="find $PWD -name '.*'"
然后/foo
它将在“那个”目录上运行,即/foo
有没有解决办法
% alias crazy="find $PWD -name '.*'"
在工作“它现在所在的目录”而不是“创建别名时所在的目录”?
答案1
嗯,解决办法很简单,感谢使用 Kamil
错误的
% alias crazy="find $PWD -name '.*'"
正确的:
% alias crazy="find \$PWD -name '.*'"