La tilde es parte de una expansión de shell (como en bash, csh, zsh, etc.). El $HOME
La variable es exportable y se puede usar independientemente de un shell específico.
El shell reemplaza ~
con el directorio de inicio del usuario (actualizar :o quizás por el directorio de inicio de algún otro usuario, si ~
es seguido por algo que no sea un /
), pero solo si es el primer carácter de una palabra.
--with-libmemcached=~
tiene ~
no al principio, por lo que el caparazón lo deja en paz.
La principal diferencia es:
cd /tmp
ls "$HOME" #works
ls "~" #nope
Entonces, shell expande el ~ solo en algunas situaciones. En su caso, la secuencia de comandos de python simplemente obtuvo ~ dentro de la secuencia de comandos, no el valor expandido.
~
se expande SOLO si es el primer carácter de una palabra Y no está entre comillas
$ echo "~"
~
$ echo foo~
foo~
$ echo ~
/home/guest
$ echo ~/foo
/home/guest/foo
~username
se expande al HOME
del username
.
$ echo ~root
/root
$ echo ~invaliduser
~invaliduser
Para citar nombres de archivos, debe usar $HOME
o citar el sufijo
$ echo "$HOME/foo bar"
/home/guest/foo bar
$ echo ~/"foo bar"
/home/guest/foo bar
$ echo ~root/"foo bar"
/root/foo bar
Tenga en cuenta lo siguiente de "POSIX Tilde Expansion"
El nombre de la ruta resultante de la expansión de la tilde se tratará como si estuviera entrecomillado para evitar que se altere por la división de campos y la expansión del nombre de la ruta.