Contents

Linux: Shell Variables

Shell variable의 종류와 어떻게 사용하는지에 대해 정리해보자.

Variable Name

여타 프로그래밍 언어와 마찬가지로 variable name을 아무렇게나 설정할 수 있는 것은 아니다. Alphanumeric과 underscore로 구성된 변수이름을 만들 수 있으며 특이점은 underscore가 먼저 오는 _VARIABLE과 같은 형태도 사용이 가능하다. Shell에서 변수의 이름은 대문자로 써야한다.

Defining Variables

특이한 점은 없고 =을 통해 assign할 수 있다.

1
2
VAR1="APPLE"
VAR2=30

Shell에서는 띄어쓰기에 주의하여야 한다. 가령 VAR1 = "APPLE"과 같이 사용할 수는 없다. 이렇게 할 경우 VAR1을 command로 인식하게 된다. 이렇게 하나의 값만 가지고 있는 변수들을 scalar variable이라고 한다.

Accessing Values

Shell에서 variable에 접근하는 방법은 변수 이름앞에 $를 붙이면 된다.

1
2
VAR1="APPLE"
echo $VAR1

위를 실행하면 VAR1의 값을 출력한다.

1
APPLE

Read-only Variables

프로그래밍의 상수와 같이 값이 변경되지 않아야 하는 변수는 readonly를 사용해 변경이 불가능하도록 설정할 수 있다.

1
2
3
VAR2=100
readonly VAR2
VAR2=1

위와 같이 실행하면 다음과 같이 read only이므로 assign할 수 없다고 나온다.

1
bash: VAR2: readonly variable

Unsetting Variables

Linux를 사용하다보면 환경변수를 지워야 할 일이 종종 생긴다. 이 때 unset을 이용해 지워줄 수 있다.

1
2
VAR=1
echo $VAR

VAR값이 출력된다.

1
1

unset으로 값을 지워보자.

1
2
unset VAR
echo $VAR

값이 unset되어 아무 값도 출력되지 않는다. Read-only 상태인 variable은 unset시킬 수 없다.

Variable Types

Shell이 작동하는 동안에는 다음의 세 가지 변수타입이 존재한다.

  • Local Variables

    현재 작동중인 shell에서만 존재하는 변수이다.

  • Environment Variables

    프로그램 설치할 때 자주 만나는 환경변수이다. 환경변수는 shell전반에서 사용된다. printenv 명령어를 통해 환경변수를 볼 수 있다. Local variable과 달리 새로운 shell을 띄워도 사용할 수 있는 변수이다.

  • Shell Variables

    Shell을 작동할 수 있게 해주는 변수들로 일부는 environment variable, 일부는 local variable이다.

Reference