Vlnka je součástí expanze shellu (jako v bash, csh, zsh atd.). $HOME proměnná je exportovatelná a lze ji použít nezávisle na konkrétním prostředí.
Shell nahrazuje ~ s domovským adresářem uživatele (aktualizace :nebo možná podle domovského adresáře nějakého jiného uživatele, pokud ~ za ním následuje něco jiného než / ), ale pouze pokud se jedná o první znak slova.
--with-libmemcached=~ má ~ ne na začátku, takže shell to nechá být.
Hlavní rozdíl je:
cd /tmp
ls "$HOME" #works
ls "~" #nope
Shell tedy rozbalte ~ pouze v několika situacích. Ve vašem případě se python script simple dostal ~ dovnitř skriptu - nikoli expaded value.
~ je rozšířena POUZE, pokud se jedná o první znak slova A je bez uvozovek
$ echo "~"
~
$ echo foo~
foo~
$ echo ~
/home/guest
$ echo ~/foo
/home/guest/foo
~username je rozšířena na HOME z username .
$ echo ~root
/root
$ echo ~invaliduser
~invaliduser
Chcete-li citovat názvy souborů, měli byste použít $HOME nebo citujte příponu
$ echo "$HOME/foo bar"
/home/guest/foo bar
$ echo ~/"foo bar"
/home/guest/foo bar
$ echo ~root/"foo bar"
/root/foo bar
Všimněte si následujícího z "POSIX Tilde Expansion"
S názvem cesty, který je výsledkem rozšíření vlnovky, se musí zacházet jako s uvozovkou, aby se zabránilo jeho změně rozdělením pole a rozšířením názvu cesty.