La tilde fa parte di un'espansione della shell (come in bash, csh, zsh, ecc.). Il $HOME
variabile è esportabile e può essere utilizzata indipendentemente da una shell specifica.
La shell sostituisce ~
con la home directory dell'utente (update :o forse dalla home directory di qualche altro utente, se ~
è seguito da qualcosa di diverso da /
), ma solo se è il primo carattere di una parola.
--with-libmemcached=~
ha ~
non all'inizio, quindi la shell lo lascia stare.
La differenza principale è:
cd /tmp
ls "$HOME" #works
ls "~" #nope
Quindi, shell espande ~ solo in poche situazioni. Nel tuo caso, lo script python semplice ha ottenuto ~ all'interno dello script, non il valore espanso.
~
viene espanso SOLO se è il primo carattere di una parola E non è quotato
$ echo "~"
~
$ echo foo~
foo~
$ echo ~
/home/guest
$ echo ~/foo
/home/guest/foo
~username
viene espanso a HOME
del username
.
$ echo ~root
/root
$ echo ~invaliduser
~invaliduser
Per citare i nomi dei file, dovresti usare $HOME
o citare il suffisso
$ echo "$HOME/foo bar"
/home/guest/foo bar
$ echo ~/"foo bar"
/home/guest/foo bar
$ echo ~root/"foo bar"
/root/foo bar
Nota quanto segue da "POSIX Tilde Expansion"
Il percorso risultante dall'espansione della tilde deve essere trattato come se fosse citato per evitare che venga alterato dalla divisione del campo e dall'espansione del percorso.