셸 변수와 환경변수 원리와 활용법
셸 변수와 환경 변수
셸 변수와 환경 변수
변수는 특정 데이터 또는 환경 설정을 위한 값을 저장하는 것으로, 기본적으로는 문자열 정보를 저장한다.
셸 변수 | 설명 |
---|---|
셸 변수(지역 변수) | - 변수가 정의된 셸에서만 사용이 가능한 변수 - 서브 셸로는 전달되지 않는다. |
환경 변수(전역 변수) | - 현재 셸 뿐만 아니라 서브 셸로도 전달되는 변수 - 보통 변수 이름을 대문자로 사용한다. - printenv : 시스템의 모든 환경 변수의 이름과 값을 출력 - export -p : 현재 셸의 모든 환경 변수를 출력 |
변수 설정 방법
(1) 변수를 만드는 방법
-등호를 이용하며 변수명=값
과 같이 사용한다.
1
2
3
4
5
6
7
8
9
# 변수 등록 및 확인
smile=gate
echo $smile
>> gate
# 서브 셸 실행
sh
echo $smile
>> 출력 없음
(2) 환경변수를 만드는 방법
-두 가지 방법이 있다.
-첫 번째는 변수명=값
과 같이 변수를 만든 뒤, export 변수
와 같이 환경변수에 등록하는 방법
-두 번째는 export 변수=값
으로 변수를 만들면서 환경변수로 등록하는 방법이다.
1
2
3
4
5
6
7
8
# 변수 등록 및 환경변수 등록
SMILE=gate
export SMILE
# 서브 셸 실행 및 확인
sh
echo $SMILE
>> gate
(3) 환경변수 삭제 방법
unset
명령어를 이용해 환경변수를 삭제할 수 있다.
1
2
3
4
5
unset smile SMILE # 다수 개 가능
echo $smile
>> 출력 없음
echo $SMILE
>> 출력 없음
환경 변수
환경 설정 파일
환경 설정 파일 : 로그인할 때 또는 셸을 시작할 때 자동으로 실행되는 명령을 저장한 파일
구분 | 설명 |
---|---|
시스템 환경 설정 파일 | 모든 사용자에게 적용되는 환경 설정 |
사용자 환경 설정 파일 | 특정 사용자에게만 적용되는 환경 설정 사용자의 home 디렉터리에 저장된다. |
Bash 셸의 환결 설정 파일
bash 셸의 경우 아래와 같은 환경 설정 파일을 가지고 있다.
순번 | 파일 | 설명 |
---|---|---|
1 | /etc/profile | - 로그인할 때 가장 먼저 수행된다. -모든 사용자에게 적용된다. - PATH, MAIL, HISTSIZE 등 전역 환경 변수가 설정되어 있다. |
2 | ~/.bash_profile | - 로그인할 때 수행된다. - 개별 사용자에게 적용된다. - 보통 내부에서 ~/.bashrc를 실행(호출) 한다. |
3 | ~/.bashrc | - 셸을 시작할 때마다 수행된다. - 개별 사용자에게 적용된다. - 보통 ~/.bash_profile 로부터 호출된다. - 보통 내부에서 /etc/bashrc를 수행한다. |
4 | /etc/bashrc | - 셸을 시작할 때마다 수행된다. - 모든 사용자에게 적용된다. - PS1설정, 에일리어스, umask, 함수 등을 설정한다. |
5 | ~/.bash_logout | - 로그아웃을 수행할 때 실행된다. |
로그인 셸의 경우
로그인 시에는 1 > 2 > 3 > 4 순으로 실행되며
로그인 후 셸(서브셸)을 실행할 때에는 3 > 4 순으로 실행된다.
profile 먼저 > bashrc 나중에 실행됨
bashrc는 사용자의 것 먼저 실행됨
비로그인 셸의 경우 4 > 3 순으로 실행됨
자주 사용되는 환경변수
변수 | 내용 |
---|---|
BASH | bash 실행 파일의 절대 경로 |
HISTCMD | 히스토리 목록에서 가장 최근의 명령을 표시하는 번호 |
HISTSIZE | 1개 셸에서 저장되는 명령 히스토리 목록의 최대 개수 |
HOME | 홈 디렉터리 |
메일 박스 디렉터리 | |
PATH | 명령을 수행할 때 실행 파일을 찾기 위한 디렉터리 목록 콜론(:)으로 구분된다. |
SHELL | 사용 중인 기본 셸 |
PWD | 현재 작업 디렉터리 |
USER | 사용자의 계정을 의미하는 이름 |
UID | 현재 사용자의 ID |
PPID | 셸의 부모 프로세스 ID |
1
2
3
4
echo $PATH
/home/user/.local/bin:/home/user/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
# 명령에 해당하는 프로그램을 찾기 위한 디렉터리 목록
# 콜론으로 구분된다.