変数を設定する場合、ドット表記と ~ のどちらを使用すればよいですか?

変数を設定する場合、ドット表記と ~ のどちらを使用すればよいですか?

すべての Hadoop 構成ファイルは、次の場所にあります。

./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"

HADOOP_HOME 変数を設定するには、ドット表記と ~ のどちらを使用すればよいですか?

HADOOP_HOME = "./.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"

または

HADOOP_HOME = " ~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"

答え1

まず、シェル割り当てはない等号の前または後にスペースを入れます。どちらの提案も、実際には文字通り と呼ばれるコマンドを実行しようとしますHADOOP_HOME

相対パスは良い考えではありません。相対パスは、ホームディレクトリではなく、現在の作業ディレクトリに相対的です。したがって、 にcd'd した場合~/Documents、それは を意味します~/Documents/.linuxbrew/…。これはまったく望んでいることではありません。

2 つ目の方法も、引用符の仕組み上、実際には機能しません。展開は~シェルが行うものと想定されており、通常は環境変数に実際に変換すべきではありません。ただし、引用符で囲むことで、その展開を防止できます。引用~/符から ビットを省くか、別の方法$HOME(二重引用符内で展開する) を使用する必要があります。したがって、次のいずれかが機能するはずです (少なくとも、$HOMEがホーム ディレクトリに設定されている場合、ほとんどの場合、そのようになります)。

HADOOP_HOME="$HOME/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"
HADOOP_HOME=~/".linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/"

個人的には、最初のものの方が読みやすいと思います。3 番目のオプションもあります。ここでは引用符は必要ありません。名前に特殊文字はありません。したがって、これも問題ありません (完全に読みやすいです)。

HADOOP_HOME=~/.linuxbrew/Cellar/hadoop/2.7.3/libexec/etc/hadoop/

変数もエクスポートすることを忘れないでください ( export HADOOP_HOME)。

関連情報