728x90
쉘 변수(Shell Variables)
!! 특징
쉘 환경에서 사용되는 내장 변수들입니다.
사용자 세션과 쉘의 동작을 제어하는데 사용됩니다.
예를 들어, PATH, HOME, USER와 같은 환경 변수들이 이에 속합니다.
!! 활용도
시스템 환경을 설정하고, 쉘의 동작을 사용자의 필요에 맞게 조정하는 데 사용됩니다.
스크립트 내에서 시스템 경로나 사용자 정보 등을 참조할 때 활용됩니다.
지역변수(Local Variables)
!! 특징
함수 내에서 선언되며, 해당 함수 내에서만 유효한 변수입니다.
함수 외부에서는 참조할 수 없으며, 함수가 종료되면 사라집니다.
local 키워드를 사용하여 선언합니다 (bash에서)
!! 활용도
함수 내에서 임시 데이터를 저장하거나, 함수의 실행 결과를 임시로 담기 위해 사용됩니다.
함수의 동작을 외부 환경으로부터 독립적으로 만들고 싶을 때 유용합니다.
전역변수(Global Variables)
!! 특징
스크립트의 어느 곳에서나 접근할 수 있는 변수입니다.
스크립트 내에서 명시적으로 선언되거나, 쉘 환경에서 스크립트로 전달된 환경 변수들이 이에 속합니다.
함수 내에서 global 키워드 없이 변수를 선언하면 기본적으로 전역 변수가 됩니다.
!! 활용도
여러 함수나 스크립트의 다른 부분 간에 데이터를 공유할 때 사용됩니다.
스크립트 전체에서 공통적으로 사용되는 설정 값이나 상수 등을 저장하는 데 사용됩니다.
매개변수(Parameters or Arguments)
!! 특징
스크립트나 함수를 호출할 때 외부로부터 전달받는 변수입니다.
스크립트에 $1, $2, $3 등으로 참조되며, 함수 내에서는 이와 유사하게 사용됩니다.
특별한 변수 $#은 전달된 매개변수의 개수를, $@ 혹은 $*는 모든 매개변수를 나타냅니다.
!! 활용도
스크립트나 함수에 외부에서 데이터를 전달하고, 동적으로 동작하게 할 때 사용됩니다.
사용자 입력이나 외부 스크립트로부터의 데이터를 처리하는 데 필요합니다.
환경 변수(Environment Variables)
!! 특징
시스템 전역에서 접근 가능한 변수로, 사용자의 세션과 모든 프로세스에 영향을 줍니다.
주로 운영 체제의 환경 설정, 애플리케이션 구성, 시스템 경로 설정 등에 사용됩니다.
예로 PATH, HOME, USER, LANG 등이 있습니다.
!! 활용도
PATH는 실행 가능한 파일을 찾을 디렉토리의 목록을 포함합니다. 이를 통해 사용자나 시스템은 특정 경로를 지정하지 않고도 실행 파일을 찾을 수 있습니다.
HOME은 사용자의 홈 디렉토리 경로를 나타냅니다. 사용자의 개인 파일과 설정을 저장하는 기본 위치입니다.
USER는 현재 로그인한 사용자의 이름을 나타냅니다.
환경변수는 스크립트에서 동적으로 시스템 환경을 참조하거나 수정할 때 사용됩니다.
쉘 변수, 지역 변수, 전역 변수, 매개 변수, 환경변수
이 다섯 가지 변수 유형은 모두 리눅스 시스템과 스크립팅에서 데이터를 저장하고 참조하는 방법을 제공합니다. 그러나 각각의 범위,
생명 주기, 용도에 차이가 있습니다.
!! 쉘 변수는 특정 쉘 세션에서 사용되며, 대부분의 경우 환경변수로 전환할 수 있습니다.
!! 지역 변수는 함수 내에서만 유효하고, 함수 외부에서는 접근할 수 없습니다.
!! 전역 변수와 환경변수는 모두 스크립트 전체 또는 사용자 세션 전체에서 접근할 수 있지만, 환경변수는
시스템의 모든 프로세스와 세션에 걸쳐 공유되며, 전역 변수는 주로 스크립트 내에서만 사용됩니다.
!! 매개변수는 스크립트나 함수가 호출될 때 외부로부터 전달받은 값으로, 해당 스크립트나 함수의 로컬 컨텍스트에서만 사용됩니다.
!! 환경변수는 시스템 전반에 걸쳐 정보를 공유하고, 사용자 환경을 설정하는 데 중요한 역할을 하며,
스크립팅에서도 시스템과 상호작용하는 데 필수적입니다.
특수 변수
특수 변수에는 위치 매개 변수, 특수 매개변수, 환경 변수가 있다.
위치 매개 변수(Positional Parameters)
스크립트나 함수에 전달된 인자를 나타내는 변수로, $1, $2, $3 등으로 표현됩니다.
$0은 스크립트나 실행된 쉘 스크립트의 이름을 나타냅니다.
특수 매개변수(Special Parameters)
스크립트 실행 시 제공되는 특정 정보를 나타내는 변수들입니다.
$*와 $@: 스크립트에 전달된 모든 위치 매개변수를 나타냅니다. $*는 하나의 문자열로,
$@는 별도의 문자열로 각 인자를 표현합니다.
$#: 스크립트에 전달된 위치 매개변수의 개수를 나타냅니다.
$$: 현재 스크립트의 프로세스 ID를 나타냅니다.
$?: 마지막으로 실행된 명령의 종료 상태(0은 성공, 0 이외는 실패)를 나타냅니다.
$!: 마지막으로 실행된 백그라운드 프로세스의 프로세스 ID를 나타냅니다.
환경 변수(Environment Variables)
앞서 언급한 것처럼, 사용자 세션과 모든 프로세스에서 접근 가능한 시스템 전역 변수입니다.
예로 PATH, HOME, USER 등이 있습니다.
배열 변수(Array Variables)
Bash에서는 일련의 요소를 하나의 변수에 저장할 수 있는 배열을 지원합니다.
배열은 0부터 시작하는 인덱스를 가지며, 각 요소에 접근하기 위해 중괄호와 인덱스를 사용합니다
(예: ${array[0]}, ${array[1]} 등).
연관 배열(Associative Arrays)
Bash 버전 4 이상에서 지원하는 키-값 쌍을 저장할 수 있는 배열입니다.
연관 배열을 사용하면 문자열 인덱스를 사용하여 배열 요소에 접근할 수 있습니다.