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.