Ich frage mich, ob cd mich alleine in meinen Home-Ordner schickt und cd ~ dasselbe tut, warum wurde das ~ dann überhaupt hinzugefügt?
Ist es etwas Spezifisches für BASH oder würden sie sich in einer anderen Shell anders verhalten?
cd-command
home
Luis Alvarado
quelle
quelle
cd ~
vscd $HOME
vscd ~not-tandu
. Diese Frage stellt etwacd
vscd ~
.Antworten:
Das
~
kann für mehr als nur das verwendet werden. Jeder Befehl kann von einer Verknüpfung zum Basisordner profitieren. Es ist also nicht notwendig, wenn Sie eine CD in Ihr Zuhause aufnehmen möchten, aber wie sieht es aus~/.config
?Andernfalls müssten Sie den Home-Pfad ausschreiben, die
$HOME
Variable verwenden oder zwei Sekunden ausführencd
. Auch zum Kopieren oder Verschieben von Dateien:Da sich die meisten Ihrer Dateien zu Hause befinden, ist es immer gut, eine Verknüpfung zu haben.
quelle
~
besteht darin,cd ~user/download
in das Download-Verzeichnis eines Benutzers zu wechseln.Dabei
cd
wird grundsätzlichcd
ohne Argumente und gemäß demcd
Verhalten "... wenn dir kein Dir angegeben wird, ist der Wert der HOME-Shell-Variablen der Standardwert" aufgerufen. (aus dem Bash-Handbuch ). Im Gegensatzcd ~
dazu geben Sie demcd
Befehl ein Argument an , das zufällig ausgeführt wird,~
und die Shell führt eine Tilde-Erweiterung durch . Was die Rückkehr zum Home-Verzeichnis des Benutzers betrifft, gibt es keinen Unterschied. In beiden Fällen wird dieHOME
Umgebungsvariable abgefragt:Tatsächlich hat dies auch keinen Unterschied zu
cd $HOME
. Währendcd
dies eine einzige Aufgabe ist, kann Tilde verwendet werden, um andere Erweiterungen durchzuführen, z. B.~+
für das aktuelle Arbeitsverzeichnis.Interessanterweise können wir jedoch
unset HOME
brechencd
,~
werden aber trotzdem funktionieren:Warum ? Wieder antworten Sie im Handbuch:
Beachten Sie, dass das Deaktivieren anders ist als das Erstellen einer leeren Variablen
HOME=
und Auswirkungen hat. In der Dokumentation wird speziell über das Aufheben von Variablen gesprochen. Die Variable gleich einer leeren Zeichenfolge zu machen, hat einen entgegengesetzten Effekt wie erwartet:Hier können Sie sehen, dass das Erstellen einer
HOME
leeren Zeichenfolge sowohl die Tilde als auch dascd
Verhalten unterbricht .Tilde und
$HOME
haben einen gewissen Unterschied und einen anderen Existenzgrund.$HOME
ist eine Shell-Variable, die zufällig auch eine der Umgebungsvariablen ist - und die allen Programmen zur Verfügung steht; in C würden Sie verwenden,environ()
um darauf zuzugreifen. Im Gegensatz dazutilde
handelt es sich um eine Shell-spezifische Syntax, die eine Tilde-Erweiterung durchführt, obwohl Sie diewordexp()
Funktion verwenden können, um eine Shell-ähnliche Erweiterung ( Referenz ) auch in C durchzuführen .Der Grund für die
~
DarstellungHOME
wurde in dieser Frage beantwortet : Es war einmal, dass das Tilde-Zeichen denselben Schlüssel mit demHOME
ADM-3A-Terminal von Lear-Siegler teilte .HOME
Im Gegensatz dazu ist die Umgebungsvariable eine rein symbolische Bedeutung und keine physischen Darstellungen.Die Tatsache, dass
HOME
es sich um eine Umgebungsvariable handelt, ermöglicht es uns außerdem, sie zu deaktivieren, da wir sie nicht mit~
einfachen Mitteln auf etwas anderes einstellen können .Beachten Sie die leere Zeile, in der zuerst
echo
die nicht gesetzte Variable ausgegeben wird, und die Tatsache, dass. Im Gegensatz dazu können wir so etwas nicht tun, um zu tilden:Änderungen
HOME
wirken sich jedoch auf Folgendes aus~
:Da dies
~
auch als Erweiterungscharakter funktioniert, können wir außerdem Folgendes tun, um das aktuelle Arbeitsverzeichnis anzuzeigen:Wenn wir dies über Umgebungsvariablen tun möchten, müssen
PWD
undHOME
bleiben wir gleich, oder wenn Sie Dinge wie tunecho $HOME+
, ist dies lediglich eine Verkettung von Zeichenfolgen / Variablen. Aber auch hier werden~+
Informationen aus Umgebungsvariablen entfernt:HINWEIS : Die Erweiterungen
~+
und~-
funktionieren inksh
, aber nicht indash
.So beantworten Sie einige Ihrer spezifischen Fragen:
Nein, dies sollte ein konsistentes Verhalten sein.
ksh
,dash
Undcsh
- alle verhalten sich gleiche mitcd
odercd ~
.Ich würde Bequemlichkeit und historische Gründe sagen, wie in der verknüpften Antwort über Tilde erläutert. Schließlich wurde mehr als nur die Erweiterung des Home-Verzeichnisses durchgeführt.
quelle
Ganz gleich , ob Sie mehrere Ordnerebenen oben oder unten sind
$HOME
, die Befehlecd
undcd ~
das gleiche tun und nicht unterscheiden - es wird Sie zurück zu Ihrem Home - Verzeichnis senden.JEDOCH: Wenn Sie sich 1 oder mehr Ordnerebenen über HOME befinden und DIREKT in ein Unterverzeichnis 1 oder mehr Ordnerebenen darunter wechseln möchten
$HOME
, ist tilde (~
) nützlich, indem Sie Tastenanschläge speichern, wenn Sie den zum Verweisen erforderlichen Text ersetzen zu,$HOME
wenn Sie einencd
Befehl eingeben . Zum Beispiel;quelle
~ steht für / home / username location, sodass Sie beim Tippen Zeit sparen. Zum Beispiel ist cd / home / username / Downloads dasselbe wie cd ~ / Downloads, aber weniger tippend. Beide Befehle tun dasselbe und ändern das Arbeitsverzeichnis an diesen Speicherort.
quelle
root
's Home-Verzeichnis ist normalerweise außerhalb/home