在shell脚本中,为什么要使用$HOME而不是~(波浪线)?

40

在Shell脚本中,与简单的~(波浪线)相比,使用变量$HOME是否有任何理由?

3个回答

45

有些情况下波浪线扩展不起作用,例如在字符串中间,比如/foo/bar:~/baz


另一个不起作用的例子,请滚动到@no_allotment的答案。 - H2ONaCl

17

可移植性和一致性的$HOME。波浪号是一种输入快捷方式。


1
那么我的理解是正确的,即在某些外壳或系统中,波浪符号(tilde)不等同于$HOME? - mybuddymichael
7
是的,Solaris 10中默认的sh不会将波浪线视为$HOME,也不会扩展~username - evolvah

15

今天我发现在双引号("")中波浪号扩展不起作用。

在zsh中(抱歉,我没有检查其他shell的行为。),

双引号("")内会发生参数和命令替换

波浪号扩展是文件名扩展,因此在双引号中它失败了。
$HOME 是一个参数替换,可以在双引号中扩展。
$HOME 是个可靠的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接