Ich habe das folgende Skript geschrieben, um bei Bedarf einige Umgebungsvariablen festzulegen.
#!/bin/sh
export BASE=/home/develop/trees
echo $BASE
export PATH=$PATH:$BASE
echo $PATH
Unterhalb des Befehls und der Ergebnisse, die ich auf meinem Terminal sehen kann: Das Skript wird ausgeführt, aber die Variablen werden am Ende nicht gesetzt.
~$: ./script.sh
/home/develop/trees
/bin:......:/home/develop/trees
~$: echo $BASE
~$:
Was ist los mit dir? Danke im Voraus. Mirko
quelle
export
Variablen an Subshells übergeben, eine Subshell ist eine Kopie Ihrer aktuellen Shell, einschließlich Variablen und Funktionen usw. Exportierte Variablen werden in neue Prozesse kopiert, die von der Shell erzeugt werden, unabhängig davon, ob dieser Prozess eine andere Shell ist oder nicht. Zweitens.
ist der POSIX-Befehl für die Beschaffung. Bash wirdsource
als besser lesbares Synonym hinzugefügt, aber Sie können sich nicht darauf verlassen, dass es in sh verfügbar ist. Und. ./script
nicht zuletzt,. script
wenn Sie Überraschungen vermeiden möchten. mywiki.wooledge.org/BashFAQ/060Wenn Sie ein Skript ausführen, wird es in einer Subshell ausgeführt. Variablen sind nur im Kontext dieser Subshell gültig. Setzen Sie sie in Ihr
.bashrc
oder und informieren.profile
Sie sich über Variablen und Unterschalen . Dieexport
Anweisung funktioniert hierachy down (aktuelle Shell und alle ihre Subshells) nicht wie in Ihrem Beispiel.Alternativ (wenn Sie wirklich möchten, dass das Skript die Umgebung Ihrer aktuellen Shell beeinflusst), führen Sie es aus wie folgt:
Das führt dazu, dass es in Ihrer aktuellen Shell ausgeführt wird, aber auch keine Variablen in der Hierarchie weitergibt.
quelle
Ich möchte oft eine Umgebungsvariable ohne Aufwand festlegen.
Folgendes füge ich meinem .bashrc hinzu, um diesen Komfort zu implementieren.
quelle
Sie können so etwas versuchen
quelle