Modifier: Il s'agit d'un doublon de /programming/998626/meaning-of-tilde-in-linux-bash-not-home-directory/ . Je n'ai pas la réputation de fermer cette question en double.
Je ne fais pas référence à ~comme dans le répertoire personnel mais plutôt à ceci:
$ ls ~foo/bar
/some/mount/point/foo/bar
Cependant, si je le tente avec un point de montage différent, par exemple:
$ mount | ag "/dev "
devfs on /dev (devfs, local, nobrowse)
$ ls /dev/stdin
/dev/stdin
$ ls ~stdin
zsh: no such user or named directory: stdin .
# bash has a similar error message:
ls: ~stdin: No such file or directory
Comment ~s'appelle dans ce contexte? Comment ça marche?
Modifier: Plus d'informations basées sur certains des commentaires ci-dessous:
- Je peux attester que ce
foon'est pas un nom d'utilisateur sur mon système. - Lors de la tentative de saisie semi-automatique,
ls -lah ~toutes les options ne sont pas affichées. c'est-à-dire que je peuxcd ~qux, quandquxn'apparaît pas dans la saisie semi-automatique. Encorequxune fois, ce n'est pas un utilisateur dans mon système. - Si c'est important,
/some/mount/pointc'est un partage réseau. - Tous les détails suggèrent un muckery de chemin nommé, une caractéristique du shell Z de l'expansion du nom de chemin, mais cela fonctionne également dans bash, qui ne supporte apparemment pas des choses comme les chemins nommés du shell Z.
/some/mount/pointn'est certainement pas mon répertoire personnel. cd ~m'emmène à /Users/$username/--quels matchs$HOME
zshsemble également utiliser le tilde pour indiquer les répertoires nommés.
bash -c "ls ~foo/bar") - qui n'a pas de répertoires nommés. De plus, même dans zsh, si j'inspecte le env, je ne vois aucun répertoire nommé configuré. Je suis sur Mac OS et je pense que c'est une fonctionnalité spécifique à OS X.
~foo. Prenez la chaîne réelle (pas l'exemple foo) et faites grep "actual username" /etc/passwd. ~textne devrait fonctionner que pour les noms d'utilisateur de connexion possibles selon le manuel bash (ne signifie pas nécessairement qu'il est réellement capable de se connecter; dans le cas d'utilisateurs du système tels que ~lp, par exemple). Dans tous mes tests, le ~stringcorrespond à stringêtre nom d'utilisateur.
~fooest le répertoire personnel de l'utilisateurfoo. Si l'utilisateur n'est pas spécifié, l'utilisateur actuel est celui par défaut.