셸 변수와 환경 변수

  • 변수는 특정 데이터 또는 환경 설정을 위한 값을 저장
    • 기본적으로 문자열 정보를 저장

  • 셸 변수 (지역 변수)
    • 변수가 정의된 셸에서만 사용이 가능하고, 서브 셸로는 전달되지 않음

  • 환경 변수 (전역 변수)
    • 현재 셸뿐만 아니라 서브 셸로도 전달
    • 보통 변수 이름으로 대문자를 사용함
    • 터미널 창을 열어 셸을 시작하면 이미 많은 환경 변수가 설정되어 있음
    • 시스템의 모든 환경 변수의 이름과 값을 출력하려면 printenv 명령을 사용
    • export -p는 현재 셸의 모든 환경 변수를 출력

  • 변수 설정과 환경 변수로 만드는 방법
    • 변수=값; export 변수
    • 또는 export 변수=변수

  • 특정 환경 변수의 값을 확인하는 방법
    • printenv 변수
    • echo $변수는 모든 변수 값을 확인할 수 있음

### 자주 사용되는 환경 변수

변수 내용
HISTSIZE 1개 셸에서 저장되는 명령 히스토리 목록의 최대 개수로 기본 값은 1000
HOME 홈 디렉터리
MAIL 사용자의 메일박스에 해당하는 파일로 보통 /var/spool/mail/username
PATH 명령을 수행할 때 실행 파일을 찾기 위한 디렉터리 목록
PS1 셸 프롬프트를 표시하기 위한 문자열
SHELL 사용 중인 기본 셸
PWD 현재 작업 디렉터리
USER 현재 사용자 계정

로그인과 셸의 환경 설정 파일

  • 로그인할 때 또는 셸을 시작할 때 자동으로 실행되는 명령을 저장한 파일
    • 시스템 환경 설정 파일과 사용자 환경 설정 파일이 있음
    • 셸의 종류에 따라 다른 이름의 설정 파일을 사용함
    • bash 셸의 경우 다음과 같음

파일 설명
/etc/profile 모든 사용자에게 적용. 로그인할 때 가장 먼저 수행됨. PATH, MAIL, HISTSIZE 등 전역의 환경 변수가 설정됨
~/ .bash_profile 로그인할 때 수행되며 개별 사용자에게 적용됨. 보통 내부에서 ~/ .bashrc를 실행
~/ .bashrc 셸을 시작할 때마다 수행되며 개별 사용자에게 적용됨. 보통 내부에서 /etc/bashrc를 수행
/etc/bashrc 모든 사용자에게 적용. 셸을 시작할 때마다 수행됨. PS1 설정, 에일리어스 설정, umask를 사용한 접근권한의 초기값, 함수 등을 설정
~/ ,bash_logout 로그아웃을 수행할 때 실행되는 스크립트 파일

Updated: