Ich habe mit Umgebungsvariablen auf meinem Mac herumgespielt und versucht, zu lernen, wie man sie verwendet. nano ~/.bash_profile
Dann habe ich den Befehl verwendet und die Zeile hinzugefügt HOME=/Users/MyCompName/Desktop
, um meine Ausgangsvariable zu aktualisieren.
Diese Änderung hat funktioniert und kann gesehen werden, wenn ich printenv
alle Umgebungsvariablen ansehe, aber als ich HOME
zurückkam, schien ich sie nicht ~/.bash_profile
mehr zu finden . Wo ist es hin?
~
bedeutet$HOME
$HOME
,~
wird auch neu definiertAntworten:
Es ist am selben Ort.
Bevor sich die Änderung
~
auf so etwas wie erweitert/Users/YourUserName
, findet die Shell Ihre.bash_profile
dort. Nachdem die Datei bezogen wurde, wird sie~
auf einen anderen Pfad erweitert, sodass sie~/.bash_profile
nicht mehr auf die relevante Datei verweist. Das liegt daran, dass in diesem Zusammenhang~
bedeutet$HOME
.Wenn Sie den vollständigen Pfad zu Ihrem tatsächlichen Basisverzeichnis kennen, können Sie ihn anstelle von verwenden
~
. In Mac würde es wahrscheinlich so aussehen:Oder lassen Sie Ihre Bash Ihr Home-Verzeichnis in der Benutzerdatenbank nachschlagen, anstatt nur nachzuschauen
$HOME
. Dafür müssen Sie sich an nichts erinnern:Es
HOME
ist nicht die beste Idee, Ihre Variable zu ändern, ohne Ihr tatsächliches Basisverzeichnis zu ändern. Das Ändern des Home-Verzeichnisses eines Benutzers ist eine administrative Aufgabe. Normalerweise können normale Benutzer dies nicht.quelle
.bash_profile
hat eine Form eines Bash-Skripts. Sie können ein Skript ausführen oder es als Quelle verwenden. Laufen heißt, eine Subshell zu erstellen und das Skript dort zeilenweise auszuführen. Sourcing bedeutet, das Skript in der aktuellen Shell auszuführen . Einige Aufgaben, die sich auf die aktuelle Shell auswirken sollen, können nicht in einer Subshell ausgeführt werden. Das Ändern einer Variablen für die aktuelle Shell ist eine davon. Aus diesem Grund werden einige Dateien nicht in einer Subshell ausgeführt, sondern als Quellen angegeben. Verwenden Sie zum manuellen Quellen einer Datei. file
(.
wird von POSIX angegeben) odersource file
(source
ist eine Nicht-POSIX-Erweiterung, die von wenigen Shells verstanden wird).nano ~YourUserName/.bash_profile
stattdessen verwenden. Dadurch wird Ihr Ausgangsverzeichnis in der Benutzerdatenbank nachgeschlagen und nicht nur $ HOME.