사용자 지정 변수 만들기

ShellBeginner
지금 연습하기

소개

이전 실습에서는 User와 같은 기존 변수를 살펴보았습니다. 이제 직접 "메모지"를 만들어 보겠습니다.

변수는 텍스트를 저장하는 이름입니다.

하지만 변수를 만들면 현재 셸에서만 비공개로 사용할 수 있습니다. 다른 프로그램과 공유하려면 변수를 export해야 합니다.

셸 변수와 환경 변수의 차이는 이 모듈의 핵심 개념 중 하나입니다. 모든 변수가 자식 프로세스에서 자동으로 볼 수 있는 환경의 일부가 되는 것은 아닙니다.

이 실습에서는 다음 작업을 수행합니다.

  • MYCAFE 변수를 만듭니다.
  • 변수의 내용을 읽습니다.
  • 변수를 "export"합니다.
  • 두 번째 셸에서 변수가 동작하는지 확인합니다.

변수 만들기

MYCAFE라는 변수를 만들고 값을 "espresso"로 설정합니다.

변수를 만드는 것은 메모지에 내용을 적는 것과 비슷합니다.

다음 명령을 실행합니다.

MYCAFE="espresso"

중요: = 기호 앞뒤에 공백을 넣지 마세요.

  • 올바른 예: MYCAFE="espresso"
  • 잘못된 예: MYCAFE = "espresso"

공백을 넣으면 셸은 MYCAFE를 명령으로 인식합니다.

이는 셸 문법에서 공백이 중요한 이유를 보여 주는 좋은 예입니다. 셸에서 공백은 단순한 시각적 서식이 아니라, 의미를 가진 단어와 인수를 구분하는 역할을 합니다.

변수 출력하기

이제 값이 저장되었는지 확인합니다.

값에 접근하려면 달러 기호 $를 사용합니다.

다음 명령을 실행합니다.

echo $MYCAFE

출력:

espresso

$를 생략하면 echo는 "MYCAFE"라는 단어만 출력합니다.

변수 내보내기

현재 MYCAFE는 로컬 변수입니다. 개인 노트에 적어 둔 메모와 같습니다.

다른 프로그램과 공유하려면 변수를 export해야 합니다. 그러면 변수가 환경 변수로 바뀝니다. 게시판에 메모를 붙이는 것과 비슷합니다.

export는 셸에 "자식 프로그램을 실행할 때 이 변수를 포함하라"고 알리는 동작이라고 생각하면 됩니다. export하지 않으면 값은 현재 셸에서만 로컬로 유지됩니다.

다음 명령을 실행합니다.

export MYCAFE

이제 이 셸에서 시작하는 모든 프로그램에 MYCAFE가 전달됩니다.

자식 셸에서 테스트하기

"자식" 셸을 시작하여 변수가 실제로 전달되는지 확인합니다.

  1. 새 bash 세션을 시작합니다.
bash

이제 새 셸 프로세스 안에 있습니다.

  1. 새 셸이 MYCAFE를 알고 있는지 확인합니다.
echo $MYCAFE

출력:

espresso

정상적으로 동작합니다. 자식 셸이 값을 상속받았습니다.

여기서 핵심 단어는 상속입니다. 자식 프로세스는 일반적으로 부모 프로세스 환경의 복사본으로 시작합니다. 따라서 export 한 변수가 스크립트와 명령에 컨텍스트를 전달하는 일반적인 방법으로 사용됩니다.

  1. 자식 셸을 종료하고 부모 셸로 돌아갑니다.
exit

요약

이 실습에서는 변수의 생명 주기를 연습했습니다.

  • 생성: MYCAFE="espresso"(공백 없음)
  • 읽기: echo $MYCAFE($를 잊지 마세요)
  • 공유: export MYCAFE(자식 프로세스에서 사용할 수 있도록 공개)

이 메커니즘은 로그인하기 전에도 시스템이 사용자의 환경 (PATH, USER 등) 을 설정하는 방식과 정확히 같습니다.