Alle meine Hadoop-Konfigurationsdateien befinden sich an folgendem Ort:
./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
Verwende ich zum Festlegen meiner HADOOP_HOME-Variable die Punktnotation oder ~?
HADOOP_HOME = "./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
oder
HADOOP_HOME = " ~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
Antwort1
Zunächst einmal: Shell-ZuweisungennichtLassen Sie vor oder nach dem Gleichheitszeichen ein Leerzeichen zu. Beide Ihrer Vorschläge würden tatsächlich versuchen, einen Befehl auszuführen, der wörtlich heißt HADOOP_HOME
.
Die relative Variante ist keine gute Idee – relative Pfade sind relativ zum aktuellen Arbeitsverzeichnis, nicht zu Ihrem Home-Verzeichnis. Wenn Sie also cd
in eingegeben haben ~/Documents
, würde das bedeuten ~/Documents/.linuxbrew/…
: . Überhaupt nicht das, was Sie wollen.
Auch die zweite Methode funktioniert nicht wirklich, da Anführungszeichen so funktionieren. Die Erweiterung ~
wird von der Shell erwartet – sie sollte eigentlich nicht in eine Umgebungsvariable umgewandelt werden. Aber durch Anführungszeichen verhindern Sie diese Erweiterung. Sie müssen das ~/
Bit aus den Anführungszeichen herauslassen oder alternativ verwenden $HOME
(was die Erweiterung in doppelten Anführungszeichen vornimmt. Daher sollte eine der beiden Methoden funktionieren (zumindest, wenn $HOME
es auf Ihr Home-Verzeichnis eingestellt ist, was fast immer der Fall ist):
HADOOP_HOME="$HOME/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
HADOOP_HOME=~/".linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
Ich persönlich finde die erste einfacher zu lesen. Es gibt noch eine dritte Möglichkeit – hier sind eigentlich keine Anführungszeichen nötig, da der Name keine Sonderzeichen enthält. Daher ist auch dies in Ordnung (und perfekt lesbar):
HADOOP_HOME=~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/
Denken Sie daran, auch die Variable zu exportieren ( export HADOOP_HOME
).