진짜 개발자
본문 바로가기

Linux/Linux

Linux - No Java executable found in current PATH: 해결방법 (/usr/bin 링크를 지웠을 때)

728x90
ㅠㅑㅜ

실수로 /usr/bin/ 이하의 링크를 지웠거나, 또는 위 그림과 같이 다음의 PATH:(/bin:/usr/bin:/sbin:/usr/sbin) 경로에 실행가능한 파일이 없다는 error가 발생했을때의 해결방법에 알아보도록 하겠습니다.

 

 

 

 

1. /bin, /usr/bin, /sbin, /usr/sbin 이 뭐죠?

우선 error를 해결하기 위해서는 위의 디렉토리가 어떤 의미를 가지는지를 아셔야 합니다. 우선 무언가를 실행하기위한 파일이 없다는 것이라는 에러메시지를 통해 실행파일? 정도들이 저장되는 곳임을 유추해볼수 있을 것입니다. 네 거의 맞습니다. 정확하게는 리눅스의 명령어들이 저장되는 디렉토리들 입니다.

 

/bin



bin은 linux의 기본 명령어들이 저장되는 디렉토리입니다. 위 그림은 ls -al /bin의 결과화면 입니다.

 

/usr/bin


usr/bin의 경우에는 사용자들이 주로 사용하는 명령어가 모여있는 디렉토리입니다. 실제 명령어 파일, 또는 명령어 파일의 위치를 심볼릭 링크로 연결해둡니다. python등의 명령어 파일이 이곳에 심볼릭 링크로 연결되곤 합니다.

 

 

Linux 디렉토리별 의미 : https://webdir.tistory.com/101

sbin으로 끝나는 디렉토리들의 경우에는 보통 시스템 명령어들이 존재하는 디렉토리 입니다. 디렉토리 구조를 알아보는 포스팅이 아니므로 여기까지만 설명드리겠습니다. 위 링크로 이동하신다면 Linux의 각 디렉토리별 의미를 파악하시는데 도움이 될것입니다.

 

 

 

2. 해결방법

저를 제외한 독자 여러분은 이미 해결방법을 떠올리셨을 것입니다. 결론부터 말씀드리자면 위의 에러메시지에서 요구하는 경로(/bin:/usr/bin:/sbin:/usr/sbin)에 명령어 파일을 넣어주면 끝입니다.

 

 

 

2.1 실행 가능한 파일 찾기


이 시점에서 궁금한것이 바로 실행 가능한 파일을 찾는 방법입니다. type명령어를 이용해 찾아보도록 하겠습니다. 위 그림은 type --help 의 결과 입니다. 설명을 읽어보면 명령어에 대한 정보를 출력해주는 명령어 임을 알 수 있습니다. 그 중에서도 -p옵션은 실행될 수 있는 파일을 출력해줍니다.

 

java의 실행가능한 파일의 위치는 위와 같습니다. /usr/bin과 같이 명령어파일이 모여있는 위치에 심볼릭링크나 명령어파일이 존재하지 않는 경우 위와같이 프로그램이 설치된 경로의 명령어 파일의 위치가 나타납니다.

 

git의 경우에는 /usr/bin위치에 실행가능한 파일이 위치하기 때문에, 위와 같이 경로가 나타납니다.

 

 

 

 

2.2 /usr/bin 위치에 심볼릭 링크 만들기

ln -s /usr/lib/jvm/java-8-openjdk-amd64/bin/java /usr/bin/java

위의 명령어를 이용하면 /usr/binjava라는 이름으로 심볼릭 링크가 생성됩니다.