다음 동작을 설명할 수 없습니다. 어떤 아이디어가 있나요?
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$
. 그렇다면 이 변수를 설정하는 파일을 변경하십시오.