Ich bin auf ein komisches Problem gestoßen. Ich habe einige env-Variablen in .bashrc
und es funktioniert wie es sollte:
echo $HADOOP_HOME
/home/me/dist/hadoop
Auf die Variable env kann jedoch nicht zugegriffen werden, wenn Bash-Skripte ausgeführt werden. Angenommen, ich erstelle /tmp/sample.sh
mit folgendem Inhalt:
#! /bin/bash
echo $HADOOP_HOME
Wenn ich das obige Skript ausführe, wird eine leere Zeile angezeigt:
/tmp/sample.sh
command-line
bash
scripts
environment-variables
Mehraban
quelle
quelle
.bashrc
? Ich vermute , dass Sie Folgendes nicht tunexport
:export HADOOP_HOME=/home/me/dist/hadoop
Wenn Sie/tmp
sample.sh ausführen (was ein neuesbash
mit einer neuen Umgebung erzeugt), befindet sich HADOOP_HOME nicht in der neuen Umgebung.Antworten:
Das liegt daran, dass die
HADOOP_HOME
Variable nicht exportiert wird:Wenn Sie ein Shell-Skript ausführen, wird dieses Skript in einer eigenen Bash-Instanz ausgeführt (das ist, was das
#!/bin/bash
tut), die eine untergeordnete Shell der aktuellen ist. Variablen werden standardmäßig nur dann nicht an untergeordnete Shells übergeben, wenn sie exportiert werden. Stellen Sie sich jede Bash-Sitzung als unabhängig vor (sie sind es größtenteils). Normalerweise möchten Sie nicht, dass in einer Variablen definierte Variablen die Umgebung einer anderen verschmutzen. In den Fällen, in denen dies erforderlich ist, verwenden Sieexport
.quelle