21068


チルダと$HOME では出力結果が違うのはなぜ？

`$ test -e "~/Library/Application Support/" && echo Found || echo Not Found`

**`Not Found`**

`$ test -e "$HOME/Library/Application Support/" && echo Found || echo Not
Found`

**`Found`**

**以下の回答からこの質問が生まれました。**

> 「ダブルクォートで囲まれた内部で ~(tilde) が展開されない事について少し。」  
>  <https://ja.stackoverflow.com/a/21065/14041>
[code]

>     $ echo ~
>     /home/nemo
>     $ echo "~"
>     ~
>  
[/code]


CC BY-SA 3.0
2016-01-19T08:28:12.747
21067
2016-01-20T03:21:41.707
2017-04-13T12:52:39.113
-1
5505
question
bash sh shellscript zsh
チルダ と $HOME の違いってなんでしょうか？


`~`は例えばbashで[Shell
Expansions](https://www.gnu.org/software/bash/manual/html_node/Shell-
Expansions.html)の一つ、[Tilde
Expansion](https://www.gnu.org/software/bash/manual/html_node/Tilde-
Expansion.html)で、自分や他人のホームディレクトリに展開されます。

> **If a word begins with an unquoted tilde character (‘~’)** , all of the
> characters up to the first unquoted slash (or all characters, if there is no
> unquoted slash) are considered a tilde-prefix.

とあり`""`で括られると条件を満たさなくなります。

`$HOME`は同じくShell Expansionsの一つ、[Shell Parameter
Expansion](https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-
Expansion.html)で、シェル変数・環境変数の値が展開されます。こちらは`~`のような制限はなさそうです。


CC BY-SA 3.0
2016-01-19T08:42:45.640
21068
2016-01-19T08:42:45.640
4236
21067
answer