환경변수 설정해주기 - bash: OOO: command not found
on Linux
실행시킬 프로그램을 찾아가는 과정에 대해
환경변수란?
프로그램에서 우리는 어떤 값을 담기 위해 변수를 지정하여 할당해준다.
환경변수는 운영체제에서 사용하는 변수라고 보면 되는데, 일반적인 변수 설정과 비슷하게 “변수명=값” 과 같은 형태로 선언한다.
기본적으로 제공되는 변수도 굉장히 많고, 사용자가 필요에 따라 지정하는 변수들도 있겠지만, 리눅스를 처음 접하게 되면 알아야 할 필수적인 환경변수들 중 하나가 바로 PATH이다.
환경변수 PATH는, 어떤 프로그램들을 실행시킬 때 해당 프로그램을 찾아보기 위한 경로들을 담고 있는 변수이다.
우리가 자바를 실행시키고 싶을 때 터미널에서 java helloworld
라고 칠 경우, 시스템이 java 실행파일이 어디있는지 찾기 위해 모든 디렉토리를 찾아볼 수 없다. 찾아볼 순 있겠지만, 굉장히 비효율적이다
따라서 우리가 명령을 내릴 때, 이런이런 경로들에만 가서 찾아볼 수 있게끔 할 때, 이 경로들을 PATH가 가지고 있는 것이다.
예를 들어 아래처럼 JAVA_HOME이라는 환경변수를 선언해준 뒤, PATH 에다가 JAVA_HOME 아래의 bin 디렉토리를 추가해놓으면, java -version
을 쳤을 때, 해당 디렉토리들을 쭉 검사하면서 찾은 java 실행 파일을 실행시키게 된다.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
특히 JAVA_HOME 은 여러 자바 기반 서비스들이 참조하는 환경 변수가 되므로, 자바를 설치하고 나면 꼭 해당 변수를 설정해주도록 하자.
# echo 로 변수의 값 출력해보기, $변수명
echo $JAVA_HOME
# output
/usr/lib/jvm/java-8-openjdk-amd64
PATH 에 있는 경로를 다 훑었는데도 실행파일을 찾지 못했다면, bash: OOO: command not found
를 출력한다.
대표적으로, 주피터 노트북을 사용하고 싶어서 sudo apt-get install jupyter
로 설치를 해주고, jupyter-notebook
을 실행시켰는데 저런 에러가 보일 수 있다.
jupyter의 실행파일은 ~/.local/bin
에 위치하므로, 해당 위치를 PATH 에 추가하자.
HOME 역시 기본적으로 제공되는 변수로, 사용자의 홈 디렉토리를 갖고 있다.
export PATH=$HOME/.local/bin:$PATH
다른 변수들에 대해 궁금하다면 printenv
를 통해 확인해보자.
매번 터미널을 켤 때 마다 변수들을 선언하고 환경변수에 추가해주기 무지무지 귀찮다.
홈 디렉토리에 .bashrc 파일이 있는데, 이 파일의 끝에다가 위의 명령어들을 추가해주고 저장하면, 터미널을 킬 때 마다 해당 내용들이 자동으로 적용된다.