Dans le terminal, l’un des moyens de faire référence à home est d’utiliser ~/
. Je ne comprends pas comment cela fonctionne, car le résultat de file ~/
est:
/home/admin/: directory
et en exécutant simplement ~/
, vous obtenez:
-bash: /home/admin/: Is a directory
alors, qu'est-ce qui convertit ~/
en /home/admin
?
~/
semble également fonctionner dans /bin/dash
, donc je sais aussi que ce n'est pas spécifique à Bash.
Le développement de tilde est requis par POSIX (voyez cela première page liée ) et apparaît dans tous les modernes shells de type Bourne . Cela inclut les shells populaires bash
name__, ksh93
et zsh
name__, mais également des shells plus minimalistes tels que mksh
name__, dash
et busybox ash
.
En pratique, différents shells compatibles POSIX diffèrent parfois par les détails précis de l'expansion du tilde, à la fois dans le cas non spécifié où HOME
serait utilisé mais non défini ou vide, et pour permettre l'utilisation de la notation ~
à d'autres fins que l'extension du domicile des utilisateurs. des répertoires. Par exemple, extension de tilde dans bash
name __ fournit également un raccourci pour accéder aux valeurs des variables PWD
et OLDPWD
name__, avec ~-
et ~+
, respectivement.
Cependant, dans les cas typiques, cela fonctionne à peu près de la même manière pour les obus à la Bourne. Ce sont des cas typiques (mais notez que cette façon de les séparer n’est pas officielle, c’est juste ma façon de présenter le matériel):
~
ou ~/
se développe tout seul dans votre répertoire personnel.~/
suivi de plusieurs composants de chemin se développe en chemin à partir de votre répertoire personnel.~username
ou ~username/
se développe tout seul vers le répertoire de base de l'utilisateur dont le nom d'utilisateur est username
name__.~username/
suivi de plusieurs composants de chemin se développe en chemin à partir du répertoire de base de l'utilisateur dont le nom d'utilisateur est username
name__.~
est 'en abrégé' pour $HOME
~
est un moyen abrégé d'écrire $HOME
, autrement dit votre répertoire personnel. Cela fonctionne dans les shells (par exemple, bash
) et est appelé 'extension de tilde'.
Si vous ajoutez une barre oblique finale, cela signifie que vous parlez d'un répertoire.
Exemples:
$ ls -d ~/
/home/sudodus/
$ ls -d ~
/home/sudodus
$ ls -d $HOME
/home/sudodus
$ Sudo -i
[Sudo] lösenord för sudodus:
# ls -d ~/
/root/
# ls -d ~
/root
# exit
logout
$ ls xournal.png
xournal.png
$ LANG=C ls xournal.png/
ls: cannot access 'xournal.png/': Not a directory