Ich bin neu im Bash-Shell-Scripting und bin auf eine Herausforderung gestoßen. Ich weiß, dass ich meine ".profile" -Datei neu laden kann, indem ich einfach Folgendes mache:
. .profile
Aber ich versuche, dasselbe in einem Bash-Skript auszuführen, das ich schreibe, und es funktioniert einfach nicht. Irgendwelche Ideen? Kann ich noch etwas zur Klärung bereitstellen?
Vielen Dank
bash
shell
unix
.bash-profile
Amir Rustamzadeh
quelle
quelle
Antworten:
Versuchen Sie dies, um Ihre aktuelle Shell neu zu laden:
quelle
source
Befehl wird die Datei als Script ... Im schlimmsten Fall führen, wenn jemand eine variable Zuordnung wie verwenden würdeMyVar="$foo$MyVar"
in ihrer bash_profile, dannsource ~/.profile
würde das Endergebnis gebenMyVar="$foo$MyVar$MyVar"
, daher$MyVar
hätte den falschen Wert danach. (Unabhängig von schlechten Praktiken, fragen Sie einfach nach einer alternativen Lösung)Versuche dies:
quelle
Beim Versuch, die Datei / source ~ / .profile neu zu laden, treten einige Probleme auf. [Dies bezieht sich auf Ubuntu Linux - in einigen Fällen sind die Details der Befehle unterschiedlich]
Anzeige. 1)
Wenn Sie dies direkt im Terminal ausführen, wird keine Subshell erstellt. Sie können also zwei Befehle verwenden:
oder
In beiden Fällen wird die Umgebung mit dem Inhalt der Profildatei aktualisiert.
Anzeige 2) Sie können jedes Bash-Skript entweder durch Aufrufen starten
oder
Im ersten Fall wird eine Unterschale erstellt, die die Umgebungsvariablen Ihres Systems nicht beeinflusst und nur für den Unterschalenprozess sichtbar ist. Nach Beendigung des Unterschalenbefehls wird keiner der Exporte usw. angewendet. Dies ist ein häufiger Fehler und führt dazu, dass viele Entwickler viel Zeit verlieren.
Damit Ihre in Ihrem Skript vorgenommenen Änderungen Auswirkungen auf die globale Umgebung haben, muss das Skript ausgeführt werden
Befehl.
Um sicherzustellen, dass Ihr Skript nicht in einem Subshel ausgeführt wird, können Sie diese Funktion verwenden. (Wieder ist Beispiel für Ubuntu Shell)
Ich hoffe, dies beseitigt einige der häufigsten Missverständnisse! : D Viel Glück!
quelle
Das Bash-Skript wird in einer separaten Subshell ausgeführt. Damit dies funktioniert, müssen Sie auch dieses andere Skript als Quelle verwenden.
quelle
.profile
Datei ungefähr so beziehen:. $HOME/.profile
und Sie müssen Ihr Skript starten, indem Sie es auch beziehen . So etwas wie. /path/to/yourscript
Versuchen:
quelle