Ich habe meine "HOME" -Variable geändert und kann jetzt "~ / .bash_profile" nicht finden, um sie wieder zu ändern

2912
Matt

Ich habe mit Umgebungsvariablen auf meinem Mac herumgespielt und versucht zu lernen, wie man sie benutzt. Ich habe den Befehl verwendet, nano ~/.bash_profilein dem ich dann die Zeile hinzugefügt habe HOME=/Users/MyCompName/Desktop, um meine Heimatvariable zu aktualisieren.

Diese Änderung hat sich bewährt und ist zu sehen, wenn ich printenvalle Umgebungsvariablen ansehe, aber als ich HOMEzurückging, schien ich nicht ~/.bash_profilemehr zu finden . Wo ist es hin?

15
Im Grunde bedeutet "~" "$ HOME" el.pescado vor 5 Jahren 9
Wenn Sie also $ HOME neu definieren, wird auch `~` neu definiert el.pescado vor 5 Jahren 6

1 Antwort auf die Frage

32
Kamil Maciorowski

Es ist am selben Ort.

Bevor die Änderung ~auf etwas erweitert wird, /Users/YourUserNamefindet die Shell Ihre .bash_profiledort. Nachdem die Datei bezogen wurde, wird sie ~auf einen anderen Pfad erweitert, sodass sie ~/.bash_profilenicht mehr auf die entsprechende Datei verweist. Dies ist weil in diesem Zusammenhang ~bedeutet $HOME.

Wenn Sie den vollständigen Pfad zu Ihrem aktuellen Basisverzeichnis kennen, können Sie ihn anstelle von verwenden ~. Bei Mac würde es wahrscheinlich so aussehen:

nano /Users/YourUserName/.bash_profile 

Oder lassen Sie Ihren Bash Ihr Home-Verzeichnis in der Benutzerdatenbank nachschlagen, anstatt nur zu suchen $HOME. Dies erfordert nicht, dass Sie sich an irgendetwas erinnern müssen:

nano ~YourUserName/.bash_profile 

Es HOMEist nicht die beste Idee, Ihre Variable zu ändern, ohne das eigentliche Basisverzeichnis zu ändern. Das Ändern des Basisverzeichnisses eines Benutzers ist eine Verwaltungsaufgabe. Normalerweise können normale Benutzer dies nicht tun.

Toll, ich konnte es dankend wiederfinden! Möchten Sie näher erläutern, was Sie unter "Nachdem die Datei beschafft wurde" bedeuten? Ich bin nicht mit dem vertraut, was es bedeutet, dass eine Datei beschafft wird Matt vor 5 Jahren 0
@Matt `.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 erstellen und dort das Skript Zeile für Zeile ausführen. Sourcing bedeutet, das Skript in der * aktuellen * Shell auszuführen. Einige Tasks, die die aktuelle Shell betreffen 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 beschafft und nicht in einer Subshell ausgeführt. Um eine Datei manuell zu finden, verwenden Sie `. file` (`.` wird von POSIX angegeben) oder` source file` (`source` ist eine Nicht-POSIX-Erweiterung, die von wenigen Shells verstanden wird). Kamil Maciorowski vor 5 Jahren 6
@Matt Siehe dies: [Was ist der Unterschied zwischen der Ausführung eines Bash-Skripts gegenüber dem Beschaffen von Quellen?] (Https://superuser.com/q/176783/432690) Kamil Maciorowski vor 5 Jahren 4
Wenn Sie (Matt) nicht wissen, wo sich Ihr Home-Verzeichnis befand, können Sie stattdessen `nano ~ IhrBenutzername / .bash_profile` verwenden. Dadurch wird Ihr Home-Verzeichnis in der Benutzerdatenbank nachgesehen und nicht nur $ HOME. Stig Hemmer vor 5 Jahren 2
@StigHemmer Die Antwort lautet jetzt Community-Wiki. Ihr nützlicher Kommentar wurde assimiliert. Vielen Dank. Kamil Maciorowski vor 5 Jahren 1