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
foo
n'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
, quandqux
n'apparaît pas dans la saisie semi-automatique. Encorequx
une fois, ce n'est pas un utilisateur dans mon système. - Si c'est important,
/some/mount/point
c'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/point
n'est certainement pas mon répertoire personnel. cd ~
m'emmène à /Users/$username/
--quels matchs$HOME
zsh
semble é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
. ~text
ne 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 ~string
correspond à string
être nom d'utilisateur.
~foo
est le répertoire personnel de l'utilisateurfoo
. Si l'utilisateur n'est pas spécifié, l'utilisateur actuel est celui par défaut.