unset $HOME 但是 '~' 仍然有 home 为什么?
unset $HOME but '~' works has home anyway why?
做我自己的shell
你好,我正在做我自己的 shell 版本并将其与 bash(学校项目)进行比较。我注意到当我 运行 以下命令 unset HOME; cd
或 unset HOME; cd $HOME
它说:
bash: cd: HOME not set
好的,对我来说一切都很好但是.. 使用此命令 cd ~
bash 转到我的主目录,或者当我 运行 echo ~
它打印我的主目录。
那你们是怎么处理的呢?我只是用这样的方式编码:
bash: cd: HOME not set
来自 the man
page for bash
:(强调)
波浪线扩展
如果单词以未加引号的波浪字符 (`~') 开头,则所有
第一个不带引号的斜杠(或所有
字符,如果没有不带引号的斜杠)被认为是
波浪号前缀。如果波浪号前缀中的 none 个字符是
引用,波浪号后波浪号前缀中的字符
被视为可能的登录名。如果此登录名是
空字符串,代字号替换为 shell 的值
参数主页。 如果未设置 HOME,则为用户的主目录
执行 shell 被替代。 否则,
波浪号前缀替换为关联的主目录
指定的登录名。
做我自己的shell
你好,我正在做我自己的 shell 版本并将其与 bash(学校项目)进行比较。我注意到当我 运行 以下命令 unset HOME; cd
或 unset HOME; cd $HOME
它说:
bash: cd: HOME not set
好的,对我来说一切都很好但是.. 使用此命令 cd ~
bash 转到我的主目录,或者当我 运行 echo ~
它打印我的主目录。
那你们是怎么处理的呢?我只是用这样的方式编码:
bash: cd: HOME not set
来自 the man
page for bash
:(强调)
波浪线扩展
如果单词以未加引号的波浪字符 (`~') 开头,则所有 第一个不带引号的斜杠(或所有 字符,如果没有不带引号的斜杠)被认为是 波浪号前缀。如果波浪号前缀中的 none 个字符是 引用,波浪号后波浪号前缀中的字符 被视为可能的登录名。如果此登录名是 空字符串,代字号替换为 shell 的值 参数主页。 如果未设置 HOME,则为用户的主目录 执行 shell 被替代。 否则, 波浪号前缀替换为关联的主目录 指定的登录名。