Die Tilde ist Teil einer Shell-Erweiterung (wie in bash, csh, zsh usw.). Der $HOME
Variable ist exportierbar und kann unabhängig von einer bestimmten Shell verwendet werden.
Die Shell ersetzt ~
mit dem Home-Verzeichnis des Benutzers (update :oder vielleicht durch das Heimatverzeichnis eines anderen Benutzers, wenn ~
etwas anderes als /
folgt ), aber nur, wenn es das erste Zeichen eines Wortes ist.
--with-libmemcached=~
hat ~
nicht am Anfang, also lässt die Shell es in Ruhe.
Der Hauptunterschied ist:
cd /tmp
ls "$HOME" #works
ls "~" #nope
Erweitern Sie die Shell also nur in wenigen Situationen. In Ihrem Fall hat das Python-Skript einfach ~ innerhalb des Skripts erhalten - nicht den erweiterten Wert.
~
wird NUR expandiert, wenn es das erste Zeichen eines Wortes ist UND nicht in Anführungszeichen steht
$ echo "~"
~
$ echo foo~
foo~
$ echo ~
/home/guest
$ echo ~/foo
/home/guest/foo
~username
wird auf HOME
erweitert des username
.
$ echo ~root
/root
$ echo ~invaliduser
~invaliduser
Um Dateinamen in Anführungszeichen zu setzen, sollten Sie $HOME
verwenden oder zitieren Sie das Suffix
$ echo "$HOME/foo bar"
/home/guest/foo bar
$ echo ~/"foo bar"
/home/guest/foo bar
$ echo ~root/"foo bar"
/root/foo bar
Beachten Sie das Folgende aus "POSIX Tilde Expansion"
Der Pfadname, der sich aus der Tilde-Erweiterung ergibt, soll behandelt werden, als ob er in Anführungszeichen gesetzt wäre, um zu verhindern, dass er durch Feldaufteilung und Pfadnamen-Erweiterung geändert wird.