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]
- Führen Sie dies direkt im Terminal oder in einem Skript aus?
- Wie führt man das in einem Skript aus?
Anzeige. 1)
Wenn Sie dies direkt im Terminal ausführen, wird keine Subshell erstellt. Sie können also zwei Befehle verwenden:
source ~/.bash_profile
oder
. ~/.bash_profile
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
sh myscript.sh
oder
. myscript.sh
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
.myscript.sh
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)
#/bin/bash
preventSubshell(){
if [[ $_ != $0 ]]
then
echo "Script is being sourced"
else
echo "Script is a subshell - please run the script by invoking . script.sh command";
exit 1;
fi
}
Ich hoffe, dies beseitigt einige der häufigsten Missverständnisse! : D Viel Glück!