为什么在shell脚本中使用$ HOME而不是〜(代字号)?

myb*_*ael 29 shell scripting environment-variables

有没有理由在shell脚本中使用变量$HOME而不是简单~(代字号)?

Ran*_*832 34

Tilde扩展在某些情况下不起作用,比如在字符串中间 /foo/bar:~/baz


evo*_*vah 12

便携性和均匀性$HOME.Tilde是一个打字快捷方式.

  • @Michael是的,Solaris 10中的默认`sh`不会将tilde视为`$ HOME`,也不会扩展`~username`. (5认同)

no_*_*ent 9

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

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

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

Tilde扩展是文件名扩展,因此在双引号内失败.
$HOME是一个参数替换,可以在双引号内扩展.
$HOME是一个安全的赌注.