Je me demande, si cd seul m'envoie dans mon dossier personnel et cd ~ fait de même, pourquoi le ~ a-t-il été ajouté en premier lieu alors?
Est-ce quelque chose de spécifique à BASH ou se comporterait-il différemment dans un autre Shell?
cd-command
home
Luis Alvarado
la source
la source
cd ~
vscd $HOME
vscd ~not-tandu
. Cette question se pose à propos decd
vscd ~
.Réponses:
Le
~
peut être utilisé pour plus que cela. Toute commande peut bénéficier d'un raccourci vers le dossier de départ. Ce n'est donc pas nécessaire si vous voulez entrer dans votre maison, mais qu'en est-il~/.config
?Sinon, vous devrez écrire le chemin de la maison, utiliser le
$HOME
var ou faire deuxcd
s. Aussi pour copier ou déplacer des fichiers:Comme la plupart de vos fichiers sont à la maison, il est toujours bon d'avoir un raccourci.
la source
~
est de fairecd ~user/download
pour aller dans le répertoire de téléchargement d'un utilisateur.Faire,
cd
c'est essentiellement appelercd
sans arguments et conformément aucd
comportement "... si dir n'est pas fourni, la valeur de la variable shell HOME est la valeur par défaut." (extrait du manuel bash ). En revanche,cd ~
c'est lorsque vous fournissez un argument à lacd
commande, qui se trouve être~
et le shell effectuera l' expansion du tilde . En ce qui concerne le retour au répertoire personnel de l'utilisateur - il n'y a aucune différence. Dans les deux cas,HOME
la variable d'environnement sera interrogée:En fait, cela n'a pas non plus de différence
cd $HOME
. Cependant, alors quecd
fera une seule et unique chose, tilde peut être utilisé pour effectuer d'autres extensions, comme~+
pour le répertoire de travail actuel.Cependant, il est intéressant de noter que nous pouvons
unset HOME
rompre,cd
mais~
cela fonctionnera toujours:Pourquoi ? Encore une fois, répondez dans le manuel:
Notez que la suppression est différente de la création d'une variable vide
HOME=
et a un effet. La documentation parle spécifiquement de la suppression de la variable. Rendre la variable égale à une chaîne vide a un effet contraire à ce que nous attendons:Ici, vous pouvez voir que la création d'
HOME
une chaîne vide rompt à la fois le tilde et lecd
comportement.Tilde et
$HOME
ont quelque peu une différence et une raison différente d'existence.$HOME
est une variable shell, qui se trouve également être une des variables d'environnement par coïncidence - et qui est disponible pour tous les programmes; en C, vous utiliseriezenviron()
pour y accéder. En revanche,tilde
est une syntaxe spécifique au shell qui effectue une expansion tilde, bien que vous puissiez également utiliser lawordexp()
fonction pour effectuer une expansion de type shell ( référence ) en C.La raison pour laquelle
~
représenteHOME
a été répondu dans cette question : il était une fois le caractère tilde partagé la même clé avecHOME
sur le terminal Lear-Siegler ADM-3A.HOME
en revanche, c'est une variable d'environnement qui avait une signification purement symbolique et aucune représentation physique.De plus, le fait qu'il
HOME
s'agisse d'une variable d'environnement nous permet de la désactiver, alors que nous ne pouvons pas définir~
autre chose par des moyens simples.Remarquez la ligne vide où
echo
sort la première variable non définie, et le fait que. En revanche, nous ne pouvons pas faire des trucs comme ça pour tilde:Cependant, la modification
HOME
affecte~
:De plus, car
~
fonctionne également comme caractère d'extension, nous pouvons faire des choses comme ceci pour afficher le répertoire de travail actuel:Alors que si nous voulons le faire via des variables d'environnement, nous avons besoin
PWD
etHOME
reste le même, ou si vous faites des choses commeecho $HOME+
- c'est simplement une concaténation chaîne / variable. Mais encore une fois,~+
supprime les informations des variables d'environnement:REMARQUE : les extensions
~+
et~-
fonctionnent dansksh
, mais pas dansdash
.Pour répondre à certaines de vos questions spécifiques:
Non, cela devrait être un comportement cohérent.
ksh
,dash
Etcsh
- tous se comportent même aveccd
oucd ~
.Je dirais la commodité et les raisons historiques comme expliqué dans la réponse liée à propos du tilde. Finalement, il a grandi pour effectuer plus qu'une simple expansion du répertoire personnel.
la source
Peu importe si vous êtes plusieurs niveaux de dossier ci - dessus ou au- dessous
$HOME
, les commandescd
etcd ~
faire la même chose et ne diffèrent pas - il vous renvoyer à votre répertoire.CEPENDANT: lorsque vous êtes 1 ou plusieurs niveaux de dossier au-dessus de HOME et que vous souhaitez accéder DIRECTEMENT à un sous-répertoire 1 ou plusieurs niveaux de dossier ci
$HOME
- dessous , le tilde (~
) est utile en vous épargnant des touches lorsqu'il est utilisé pour remplacer le texte nécessaire pour faire référence à$HOME
lors de la saisie d'unecd
commande. Par exemple;la source
~ signifie / home / nom d'utilisateur, donc vous gagnez du temps lors de la frappe. Par exemple, cd / home / nom d'utilisateur / Téléchargements est identique à cd ~ / Downloads, mais moins de frappe. Les deux commandes font de même, changez le répertoire de travail à cet emplacement.
la source
root
le répertoire personnel est généralement à l'extérieur/home