在Shell脚本中,与简单的~
(波浪线)相比,使用变量$HOME
是否有任何理由?
在Shell脚本中,与简单的~
(波浪线)相比,使用变量$HOME
是否有任何理由?
有些情况下波浪线扩展不起作用,例如在字符串中间,比如/foo/bar:~/baz
可移植性和一致性的$HOME
。波浪号是一种输入快捷方式。
sh
不会将波浪线视为$HOME
,也不会扩展~username
。 - evolvah今天我发现在双引号(""
)中波浪号扩展不起作用。
在zsh中(抱歉,我没有检查其他shell的行为。),
双引号(
""
)内会发生参数和命令替换
波浪号扩展是文件名扩展,因此在双引号中它失败了。
$HOME
是一个参数替换,可以在双引号中扩展。
$HOME
是个可靠的选择。