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.