Tout d'abord, je sais que ~/
c'est le répertoire personnel. Le CD ~
ou ~/
m’amène au répertoire personnel.
Cependant, cd ~X
m'emmène dans un endroit spécial, où X
semble être quelque chose.
En bash, si je frappe " cd ~
" et que j'appuie sur l' onglet, cela montre un tas d' ~X
options possibles comme ~mail
et ~postgres
et ~ssh
. Aller à ces dossiers et faire un pwd
me montre que ces dossiers ne sont pas dans le répertoire de base; ils sont partout.
Ce ne sont pas des alias. J'ai vérifié. Ce ne sont pas des env.
variables, sinon ils auraient besoin d'un fichier $
.
Qu'est-ce que la définition de ces liens et où puis-je trouver où ils sont définis?
Réponses:
C'est une fonctionnalité de Bash appelée " expansion tilde ". C'est une fonction du shell, pas du système d'exploitation. Vous obtiendrez un comportement différent avec csh, par exemple.
Pour répondre à votre question sur la provenance des informations: votre répertoire personnel provient de la variable
$HOME
(peu importe ce que vous y stockez), tandis que les maisons des autres utilisateurs sont récupérées en temps réel à l'aide degetpwent()
. Cette fonction est généralement contrôlée par NSS ; Par conséquent, les valeurs par défaut sont extraites/etc/passwd
, bien qu'il puisse être configuré pour récupérer les informations à l'aide de n'importe quelle source souhaitée, telle que NIS, LDAP ou une base de données SQL.L'expansion de Tilde est plus que la recherche de répertoire personnel. Voici un résumé:
dirs
et~1
,~-1
, etc., sont utilisés conjointement avecpushd
etpopd
.la source
~+
? semble plutôt inutile.Ce sont les répertoires personnels des utilisateurs. Essayez
cd ~(your username)
, par exemple.la source
Sont-ils les répertoires personnels des utilisateurs
/etc/passwd
? Des services comme postgres, sendmail, apache, etc., créent des utilisateurs système qui ont des répertoires personnels comme les utilisateurs normaux.la source
Ce sont des utilisateurs. Vérifiez votre
/etc/passwd
.cd ~username
vous amène au répertoire de base de cet utilisateur.la source
Sur ma machine, en raison de la façon dont je configure les choses, je fais:
Le premier fait attention à la valeur de la variable d'environnement
$HOME
; J'ai délibérément configuré mon$HOME
sur un système de fichiers local au lieu d'un système de fichiers monté sur NFS. Le second lit le fichier de mot de passe (environ; NIS complique un peu les choses) et trouve que le fichier de mot de passe indique que mon répertoire personnel est/u/jleffler
et change vers ce répertoire.Le truc ennuyeux est que la plupart des logiciels se comportent comme ci-dessus (et la spécification POSIX pour le shell exige ce comportement). J'utilise un logiciel (et je n'ai pas beaucoup de choix pour l'utiliser) qui traite les informations du fichier de mots de passe comme la valeur actuelle de $ HOME, ce qui est faux.
En appliquant cela à la question - comme d'autres l'ont souligné, `
cd ~x
` va dans le répertoire personnel de l'utilisateur 'x', et plus généralement, chaque fois que le développement du tilde est fait,~x
signifie le répertoire personnel de l'utilisateur 'x' (et c'est une erreur si l'utilisateur «x» n'existe pas).Il pourrait être intéressant de mentionner que:
Je ne peux pas trouver immédiatement une utilisation pour '
~+
', à moins que vous ne fassiez des trucs bizarres en déplaçant des liens symboliques dans le chemin menant au répertoire actuel.Vous pouvez également faire:
Cela signifie la même chose que
~-
.la source
cd ~+
: vous pouvez potentiellement l'utiliser pour vérifier si un répertoire dans lequel vous vous trouvez existe toujours - même si c'est une manière assez peu orthodoxe de le faire.Expansion du tilde dans Bash:
http://bash-hackers.org/wiki/doku.php/syntax/expansion/tilde
la source
Si vous utilisez,
autofs
l'extension peut en fait provenir de/etc/auto.home
(ou similaire pour votre distribution). Par exemple, mon/etc/auto.master
ressemble à:et
/etc/auto.home
ressemble à:la source
Il est possible que vous voyiez des utilisateurs OpenDirectory / ActiveDirectory / LDAP «montés automatiquement» dans votre répertoire personnel.
Dans * nix,
~
sera résolu dans votre répertoire personnel. De même,~X
se résoudra en «utilisateur X».Semblable au montage automatique pour les répertoires, OpenDirectory / ActiveDirectory / LDAP est utilisé dans les environnements plus grands / d'entreprise pour monter automatiquement les répertoires d'utilisateurs. Ces utilisateurs peuvent être des personnes réelles ou des comptes machine créés pour fournir diverses fonctionnalités.
Si vous tapez, ~Tabvous verrez une liste des utilisateurs sur votre machine.
la source