Tilde adalah bagian dari ekspansi shell (seperti di bash, csh, zsh, dll). $HOME variabel dapat diekspor dan dapat digunakan secara independen dari shell tertentu.
Shell menggantikan ~ dengan direktori beranda pengguna (perbarui :atau mungkin oleh direktori home dari beberapa pengguna lain, jika ~ diikuti oleh sesuatu selain / ), tetapi hanya jika itu adalah karakter pertama dari sebuah kata.
--with-libmemcached=~ memiliki ~ tidak di awal, jadi shell membiarkannya saja.
Perbedaan utamanya adalah:
cd /tmp
ls "$HOME" #works
ls "~" #nope
Jadi, dia akan memperluas ~ hanya dalam beberapa situasi. Dalam kasus Anda, skrip python sederhana mendapatkan ~ di dalam skrip - bukan nilai yang diperluas.
~ diperluas HANYA jika itu adalah karakter pertama dari sebuah kata DAN tidak dikutip
$ echo "~"
~
$ echo foo~
foo~
$ echo ~
/home/guest
$ echo ~/foo
/home/guest/foo
~username diperluas ke HOME dari username .
$ echo ~root
/root
$ echo ~invaliduser
~invaliduser
Mengutip nama file, Anda harus menggunakan $HOME atau kutip akhiran
$ echo "$HOME/foo bar"
/home/guest/foo bar
$ echo ~/"foo bar"
/home/guest/foo bar
$ echo ~root/"foo bar"
/root/foo bar
Perhatikan hal berikut dari "Ekspansi POSIX Tilde"
Nama jalur yang dihasilkan dari perluasan tilde harus diperlakukan seolah dikutip untuk mencegahnya diubah oleh pemisahan bidang dan perluasan nama jalur.