Podle této odpovědi a mého vlastního chápání se vlnovka rozšiřuje do domovského adresáře:
$ echo ~
/home/braiam
Nyní, kdykoli chci, aby expanze shellu fungovala, tj. E. pomocí názvů proměnných, jako je $FOO
a neporušujte kvůli neočekávaným znakům, jako jsou mezery atd. měli byste používat dvojité uvozovky "
:
$ FOO="some string with spaces"
$ BAR="echo $FOO"
$ echo $BAR
echo some string with spaces
Proč toto rozšíření nefunguje s vlnovkou?
$ echo ~/some/path
/home/braiam/some/path
$ echo "~/some/path"
~/some/path
Přijatá odpověď:
Důvodem je, že uvnitř dvojitých uvozovek je vlnovka ~
nemá žádný zvláštní význam, je považováno za doslovné.
POSIX definuje dvojité uvozovky jako:
Uzavření znaků do uvozovek ( “” ) zachová
doslovnou hodnotu všech znaků v uvozovkách, s
výjimkou znaků dolaru, zpětné uvozovky a zpětného lomítka,…
Aplikace zajistí, aby před dvojitou uvozovkou bylo
zpětné lomítko, které má být zahrnuto do uvozovek. Parametr ‚@‘ má
zvláštní význam uvnitř dvojitých uvozovek
Kromě $ , ` , a @ , ostatní znaky jsou považovány za doslovné uvnitř dvojitých uvozovek.