次の動作を説明できません。どんなアイデアがありますか?
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 3.13.0-32-generic x86_64)
* Documentation: https://help.ubuntu.com/
New release '14.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Wed Oct 21 22:43:19 2015 from 10.0.2.2
vagrant@master:~$ echo $0
-bash
vagrant@master:~$ export A=/hello
vagrant@master:~$ echo $A
/hello
vagrant@master:~$ echo $A/bin
/hello/bin
vagrant@master:~$ echo $A/bin/asd
/hello/bin/asd
vagrant@master:~$ export A=/hello-2.6.1
vagrant@master:~$ echo $A
/hello-2.6.1
vagrant@master:~$ echo $A/bin
/hello-2.6.1/bin
vagrant@master:~$ echo $A/bin/asd
/hello-2.6.1/bin/asd
vagrant@master:~$ echo $HADOOP_HOME
/opt/hadoop-2.6.1
vagrant@master:~$ echo $HADOOP_HOME/bin
/bin/hadoop-2.6.1
vagrant@master:~$ echo $HADOOP_HOME/bin1234
/bin1234oop-2.6.1
vagrant@master:~$ uname -a
Linux master 3.13.0-32-generic #57~precise1-Ubuntu SMP Tue Jul 15 03:51:20 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
vagrant@master:~$ export A=/opt/hadoop-2.6.1
vagrant@master:~$ echo $A/bin
/opt/hadoop-2.6.1/bin
vagrant@master:~$ echo $A/bin/asd
/opt/hadoop-2.6.1/bin/asd
vagrant@master:~$ echo $A
/opt/hadoop-2.6.1
vagrant@master:~$
答え1
HADOOP_HOME
変数がキャリッジリターンで終わる値として定義されているようです。
/
o
p
t
/
h
a
d
o
o
p
-
2
.
6
.
1
carriage return
だからあなたがするとき
echo $HADOOP_HOME/bin
あなたは出力を得る
/
o
p
t
/
h
a
d
o
o
p
-
2
.
6
.
1
carriage return
/
b
i
n
みんな一列にあるので/bin
書く画面上では/opt
こんな感じ
/bin/hadoop-2.6.1
以下を実行してこれを確認できます。
A=/opt/hadoop-2.6.1
echo $A | od -cb
echo $HADOOP_HOME | od -cb
HADOOP_HOME
定義された場所を参照してください。それはあなたの「一つ」かもしれません.
"ファイル; たとえば、ホームディレクトリに、、、、、または類似.profile
の.bashrc
名前のファイルがあります。これを使用する場合は、文字列の末尾に表示する必要があります。これはキャリッジリターンを表します。削除します。.bash_profile
/etc
vi
^M
^M
答え2
変数$HADOOP_HOME
の末尾にCR文字があるようです。これを確認するにはecho $HADOOP_HOME | cat -vet
。次のようにする必要があります/opt/hadoop-2.6.1$
。その場合は、この変数を設定するファイルを変更してください。