[Linux] Shell Variables - 지역 변수와 환경 변수
Shell Variables는 스크립트 작성에 있어서 필수적인 요소입니다. 변수는 크게 지역 변수(local variable)와 환경 변수(environment variable) 두 가지로 구분되며, 각각의 용도와 범위가 다릅니다. 이번 글에서는 이 두 변수의 차이점을 실제 예제를 통해 비교해 보겠습니다.
Shell Variables - 지역 변수
지역 변수는 현재 쉘 또는 특정 스크립트 내에서만 유효한 변수입니다. 이 변수는 해당 프로세스 내부에서만 사용 가능하며, 자식 프로세스에는 전달되지 않습니다.
지역 변수 생성 및 확인
지역 변수는 리눅스 터미널에서 아래와 같이 간단히 정의할 수 있습니다.
[root@rhel84 ~]# color=blue
이 경우 color
라는 변수에 blue
라는 값이 저장됩니다. 해당 변수는 현재 쉘 세션 내에서만 유효하며, 자식 프로세스에서는 사용할 수 없습니다.
다음으로, echo
명령어를 사용해 변수 값을 확인할 수 있습니다.
[root@rhel84 ~]# echo $color blue
또한, 아래와 같은 스크립트를 생성해 자식 프로세스 내에서 변수 인식 여부를 테스트할 수 있습니다.
[root@rhel84 ~]# cat color.sh #!/bin/bash echo $color [root@rhel84 ~]# sh color.sh [root@rhel84 ~]# echo $color blue
스크립트 내에서는 변수가 출력되지 않는 것을 확인할 수 있습니다. 이는 color
변수가 지역 변수이기 때문입니다.
지역 변수 확인 명령어
지역 변수는 set
명령어를 통해 확인할 수 있습니다. 이 명령어는 지역 변수와 환경 변수를 구분 없이 모두 출력합니다. 아래 예제는 color
라는 지역 변수가 등록되어 있는지 확인하는 방법입니다.
[root@rhel84 ~]# set | grep ^color= color=blue
환경 변수 - Shell Variables
환경 변수는 시스템 전체에서 사용 가능한 변수입니다. 환경 변수로 설정된 변수는 자식 프로세스에서도 사용할 수 있어서 시스템 전역 설정 및 사용자 환경 구성에 많이 사용됩니다.
환경 변수 생성
변수 정의 시 export(내보내기)를 사용하면 하위 프로세스가 변수를 상속받을 수 있도록 환경 변수로 변수가 설정됩니다. export는 bash의 내장 쉘 명령어입니다.
[root@rhel84 ~]# export color=red
참고로 bash 내장 쉘 명령어 인지 아닌지는 type 명령어로 확인해 볼 수 있습니다.
## bash 쉘 내장 명령어 [root@server ~]# type export export is a shell builtin ## 일반 명령어 [root@server ~]# type date date is /usr/bin/date
환경 변수 확인
환경 변수는 echo
나 env
명령어로 확인할 수 있습니다. env
는 시스템에 등록된 모든 환경 변수를 출력합니다.
oot@rhel84 ~]# echo $color red [root@rhel84 ~]# env | grep color color=red
설정한 환경 변수가 스크립트에서도 정상적으로 인식되는지 아래 예제로 확인할 수 있습니다.
[root@rhel84 ~]# cat color.sh #!/bin/bash echo $color [root@rhel84 ~]# sh color.sh red
변수 해제 - unset 명령
설정한 변수는 unset
명령어를 이용해 해제할 수 있습니다. 지역 변수든 환경 변수든 동일하게 적용됩니다.
[root@rhel84 ~]# export color=red [root@rhel84 ~]# env | grep color color=red [root@rhel84 ~]# unset color [root@rhel84 ~]# env | grep color
파일 내에 변수가 설정되어 있다면 해당 파일이 다시 실행될 때 변수가 재설정될 수 있으므로 주의가 필요합니다.
마치며
이번 글에서는 지역 변수와 환경 변수의 차이점에 대해 살펴보았습니다. 지역 변수는 현재 쉘 세션에서만 유효하며, 주로 임시 스크립트나 한정된 작업에서 사용됩니다. 반면, 환경 변수는 자식 프로세스에도 전달되기 때문에 전역 설정이나 로그인 환경 구성에 자주 사용됩니다.
특히 대표적인 예로는 PATH
환경 변수가 있으며, 이 변수는 시스템 명령어의 위치를 알려주는 중요한 설정입니다. PATH 설정 방법에 대해서는 여기에서 자세히 확인하실 수 있습니다.
댓글
댓글 쓰기