【问题标题】:Why use $HOME over ~ (tilde) in a shell script?为什么在 shell 脚本中使用 $HOME 而不是 ~ (波浪号)?
【发布时间】:2011-08-21 07:13:50
【问题描述】:

是否有任何理由在 shell 脚本中使用变量 $HOME 而不是简单的 ~(波浪号)?

【问题讨论】:

    标签: shell scripting environment-variables home-directory tilde-expansion


    【解决方案1】:

    波浪号扩展在某些情况下不起作用,例如在 /foo/bar:~/baz 这样的字符串中间

    【讨论】:

    • 另一个不起作用的例子,滚动到@no_allotment 的答案。
    【解决方案2】:

    $HOME 的可移植性和统一性。波浪号是一种打字快捷方式。

    【讨论】:

    • 所以我理解有些 shell 或系统中波浪号不是 $HOME 的同义词是正确的?
    • @Michael 是的,Solaris 10 中的默认sh 不会将波浪号视为$HOME,也不会扩展~username
    【解决方案3】:

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

    在zsh中(对不起,我没有检查其他shell的行为。),

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 2019-05-05
      • 2021-02-03
      • 1970-01-01
      • 2011-04-06
      • 2012-03-16
      • 2015-01-30
      相关资源
      最近更新 更多