환경변수를 배우기 이전에 쉘에 관해 공부를 하여야 이해에 도움이 됩니다.
○ 환경 변수란 ?
▷ 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임
▷ 그 값들이 쉘에서 정의되고, 실행하는 동안 프로그램에 필요한 변수를 나타내줌
▷ 현재 사용하고 있는 쉘의 실행파일에 대한 위치를 저장하는 변수이다.
▷ 쉽게 말해 언제 어디서든 실행파일을 사용하고 싶은 경우에 대게 설정을 한다.
(실행파일 경로를 설정하기 위해 환경 변수를 설정한다고 해도 과언이 아닙니다.)
(예로 java나 tomcat을 사용할 때 환경변수를 설정한다.)
▷ 여러가지 문자를 다 쓰기 싫어서 줄여서 쓰고 싶을 때 설정을 한다.
▷ 그 설정을 쉘이라는 것에 따라 모두가 사용할 수 있고, 특정 사용자만 사용할 수 있다.
이해가 안가신다면 아래 추가 설명을 참고하시면 됩니다.
이해를 돕기 위한 설명입니다. 나중에 아래에서는 실행파일 경로에 대한 예시도 들어보겠습니다.
'$' 문자는 유닉스 시스템의 쉘 스크립트에서 변수를 불러오는 중요한 문자입니다.
쉽게 말해 참조하라는 뜻
# export etcp="/etc/profile" 이렇게 환경 변수를 등록해줍니다.
# export [변수명]=[환경 변수] : 환경 변수 설정
(이 때 변수명과 데이터값 사이에 있는 = 과 띄워쓰면 오류가 납니다.)
# echo $etcp 명령어로 환경 변수가 설정되어 있는 것을 확인합니다.
# echo [$변수명] : 환경 변수 출력
/etc/profile에 들어가서 시스템 전체 환경 변수를 등록하고 싶을 때
# vi $etcp 명령어로 내가 설정해놓은 것 처럼 쉽게 사용할 수 있음
● 환경 변수 3가지
▷ 로컬 환경 변수
- 현재 세션에만 동작하는 환경 변수
- 그 자리에서 export 명령어로 지정 가능
▷ 사용자 환경 변수
- 특정 사용자만 사용할 수 있게 만든 환경 변수
- .bash_profile 이라는 특정 사용자의 홈 디렉토리에 존재하는 파일에 환경 변수 설정
▷ 시스템 전체 환경 변수
- 모든 사용자가 사용할 수 있게 만든 환경 변수
- /etc/profile 이라는 파일에 환경 변수 설정
※ 참고로 설정하는 위 파일들은 여러개가 존재합니다. 대표적인것만 적었습니다.
.bash_profile 은 특정 사용자가 원격 로그인 세션이 이루어질 시에 파일 호출
/etc/profile 은 모든 사용자가 로그인 세션이 이루어질 때 파일 호출
▷ 환경 변수 조회
# env 글로벌 환경 변수 조회 (모든 사용자 적용 되는 것)
# set 로컬 환경 변수 조회 (특정 사용자 적용되는 것) + 쉘 환경을 설정할 수 있음(옵션 사용)
● 환경 변수 자주 사용하는 용어
# echo [$변수명] 명령어로 한번 검색해보면 감이 옵니다.
$HOME : 사용자 홈 디렉토리
$PATH : 실행 파일을 찾는 경로
$USER : 사용자 이름
$LANG : 프로그램 사용시 기본으로 지원되는 언어
$PWD : 사용자가 위치하고 있는 디렉토리
$PPID : 부모 프로세스ID
$UID : 사용자 UID
○ 환경 변수 경로(PATH) 설정
▷ 명령어로도 경로를 지정할 수 있습니다.
▷ 필자는 위에 기재한 파일 경로로 들어가서 직접 기입하는 것을 추천 (실수도 없고 확인도 편리)
▷ 설정의 이유는 현재 위치가 어디에 있든지 원하는 프로세스를 실행 가능
(기존의 리눅스 명령어들도 기본적으로 등록이 되어있어서 사용 가능한 것입니다.)
▷ export PATH=$PATH:[경로] 를 써주시거나
export PATH=[경로]:$PATH 를 써주시면 됩니다. 형식이 이렇습니다.
(이렇게 사용하는 이유는 기존에 사용하는 기존의 환경변수를 불러들이기 위해서 입니다.)
($PATH: 이것을 사용하는 이유는 그 전에 기본적으로 환경변수 설정이 되어있는 것들도
불러와서 계속 사용하기 위해 꼭 입력을 해주어야 합니다. 우리가 흔히 사용하는 ls, pwd 등
명령어들이 다 기존의 환경변수에 다 등록되어 있기 때문입니다.)
여러 경로를 적고 싶으시다면 콜론(:)으로 구분하고 뒤에 추가로 계속 적을 수 있습니다.
▷ 위와 같은 형식으로 /etc/profile 같은 파일안에 기입해주시면 됩니다.
▷ 설정을 마치면 # source /etc/profile 명령어로 적용시켜 줍니다.
# source [설정 파일]
○ Java, Tomcat 환경 변수 설정 이유
▷ Java에서 PATH를 잡는 이유 ?
- javac 명령어를 어디서든 사용하기 위함입니다. (javac는 컴파일 기능을 합니다.)
- bin 디렉토리 안에 모든 자바 전용 툴을 사용하기 위함입니다.
▷ JVM에 의해 java는 다른 폴더에서도 실행되지만, java를 컴파일할떄 필요한 javac는 path를
잡지않으면 실행할 수 없습니다.
▷ Tomcat에서 CLASSPATH를 잡는 이유?
- Java에서 path를 사용한다. Java에서는 class라는 것을 사용한다.
- PATH와 비슷한 개념이지만, 자바의 class 파일들을 위한 환경 변수라고 생각하면 된다.
- Java환경에서 컴파일 할 때 필요하다.
- *.class가 모여있는 곳을 가르쳐준다.
쉽게 말해 라이브러리(class파일)을 Java에게 위치를 알려주는 역할을 한다.
- JDK가 제공하는 라이브러리를 사용할 수 있도록 하기 위한 설정이다.
예시) CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar 이렇게 만약 경로를 지정했다면
이 뜻은 너가 필요한 파일을
.(현재 폴더) 랑
$JAVA_HOME경로 참조해서 그 안에 lib디렉토리로 가서 tool.jar 랑
$CATALINA_HOME경로 참조하여 그 안에 lib디렉토리로 가서 jsp-api.jar 랑
$CATALINA_HOME경로 참조하여 그 안에 lib디렉토리로 가서 servlet-api.jar 중에 사용해라
댓글