환경변수 설정해주기 - bash: OOO: command not found

실행시킬 프로그램을 찾아가는 과정에 대해


환경변수란?

프로그램에서 우리는 어떤 값을 담기 위해 변수를 지정하여 할당해준다.

환경변수는 운영체제에서 사용하는 변수라고 보면 되는데, 일반적인 변수 설정과 비슷하게 “변수명=값” 과 같은 형태로 선언한다.

기본적으로 제공되는 변수도 굉장히 많고, 사용자가 필요에 따라 지정하는 변수들도 있겠지만, 리눅스를 처음 접하게 되면 알아야 할 필수적인 환경변수들 중 하나가 바로 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 파일이 있는데, 이 파일의 끝에다가 위의 명령어들을 추가해주고 저장하면, 터미널을 킬 때 마다 해당 내용들이 자동으로 적용된다.