我确定以前有人问过这个问题,但我找不到任何东西。我们在共享机器上有难以理解的登录名,并希望使用 shell 变量来替换难以记住的登录名来代替人们的真实姓名。
例如,假设 Omar 的登录名是 xyz123。我可以做这个:
$ omar=xyz123
$ echo ~$omar
并且输出看起来不错:
~xyz123
但如果我输入这个:
$ ls ~$omar
有一个错误:
ls: cannot access ~xyz123: No such file or directory
我认为这是因为波浪号扩展发生在变量扩展之前,但无法弄清楚如何解决这个问题。
尽管我不确定,但也许这个答案是相关的: How to manual expand a special variable (ex: ~ tilde) in bash