Le tilde fait partie d'une extension du shell (comme dans bash, csh, zsh, etc.). Le $HOME
variable est exportable et peut être utilisée indépendamment d'un shell spécifique.
Le shell remplace ~
avec le répertoire personnel de l'utilisateur (mise à jour :ou peut-être par le répertoire personnel d'un autre utilisateur, si ~
est suivi d'autre chose qu'un /
), mais seulement s'il s'agit du premier caractère d'un mot.
--with-libmemcached=~
a ~
pas au début, donc le shell le laisse tranquille.
La principale différence est :
cd /tmp
ls "$HOME" #works
ls "~" #nope
Ainsi, le shell ne développe le ~ que dans quelques situations. Dans votre cas, le script python a simplement obtenu ~ à l'intérieur du script - pas la valeur développée.
~
est développé UNIQUEMENT s'il s'agit du premier caractère d'un mot ET s'il n'est pas entre guillemets
$ echo "~"
~
$ echo foo~
foo~
$ echo ~
/home/guest
$ echo ~/foo
/home/guest/foo
~username
est étendu au HOME
des username
.
$ echo ~root
/root
$ echo ~invaliduser
~invaliduser
Pour citer les noms de fichiers, vous devez utiliser $HOME
ou citez le suffixe
$ echo "$HOME/foo bar"
/home/guest/foo bar
$ echo ~/"foo bar"
/home/guest/foo bar
$ echo ~root/"foo bar"
/root/foo bar
Notez ce qui suit de "POSIX Tilde Expansion"
Le nom de chemin résultant de l'expansion du tilde doit être traité comme s'il était entre guillemets pour éviter qu'il ne soit modifié par le fractionnement des champs et l'expansion du nom de chemin.