기본 문법
export [-fn] [이름[=값] ...] / export -p
export는 현재 셸의 변수(또는 함수)에 '내보내기' 속성을 붙여, 그 셸에서 실행되는 자식 프로세스까지 값이 전달되도록 하는 bash 내장 명령입니다. export 없이 NAME=value 형태로만 지정한 변수는 현재 셸 안에서만 보이고, 새로 실행한 명령이나 스크립트에서는 보이지 않습니다.
실무에서는 PATH에 경로를 추가하거나 프록시 설정(http_proxy, no_proxy), 애플리케이션 설정값(JAVA_HOME, LANG) 같은 값을 지정할 때 사용합니다. 로그인할 때마다 자동으로 적용하려면 ~/.bash_profile, ~/.bashrc 또는 /etc/profile.d/*.sh 파일에 export 문을 적어 둡니다. Rocky Linux 8에서는 로그인 셸이 읽는 /etc/profile과, 대화형 비로그인 셸이 읽는 /etc/bashrc가 모두 /etc/profile.d 아래의 .sh 파일을 읽습니다. 따라서 이 디렉터리에 스크립트를 두면 전체 사용자에게 적용됩니다. 시스템 파일을 직접 편집하기보다 /etc/profile.d에 별도 .sh 파일을 추가하는 방식이 되돌리기 쉽습니다.
리눅스마스터·LPIC·RHCSA 등 시험에서는 profile.d 스크립트 작성, PATH 확장, env나 export -p로 환경 변수 확인하기 형태로 출제됩니다.
자주 쓰는 옵션
| 옵션 | 의미 | 예 |
|---|---|---|
이름=값 | 변수에 값을 대입하면서 환경 변수로 내보내기 | export LEARNIX_ENV=practice |
이름 | 이미 정의된 셸 변수를 값 변경 없이 환경 변수로 표시 | APP_PORT=8080; export APP_PORT |
-p | 현재 내보내진 변수 목록을 다시 입력에 사용할 수 있는 declare -x 형식으로 출력 | export -p |
-n | 내보내기 속성만 제거(변수 자체는 현재 셸에 남음) | export -n http_proxy |
-f | 변수가 아니라 셸 함수를 내보내기 | hello() { echo hi; }; export -f hello |
실무 예시
변수를 환경 변수로 내보내기
$ export APP_NAME=learnix; echo "$APP_NAME"
learnix
값을 대입하면서 동시에 내보내는 가장 기본 형태입니다. 현재 셸에서 바로 값을 확인할 수 있습니다.
export 유무에 따른 자식 프로세스 차이
$ MYVAR=local; export MYEXP=exported; bash -c 'echo "local=[$MYVAR] exported=[$MYEXP]"'
local=[] exported=[exported]
export하지 않은 MYVAR는 자식 셸에 전달되지 않아 빈 값으로 나오고, export한 MYEXP만 전달됩니다.
내보낸 변수 목록 확인
$ export LEARNIX_ENV=practice; export -p | grep LEARNIX_ENV
declare -x LEARNIX_ENV="practice"
export -p는 내보내진 변수를 declare -x 형식으로 출력하므로 설정 여부를 확인할 때 씁니다.
PATH 뒤에 경로 추가
$ export PATH=$PATH:/opt/tools/bin; echo "$PATH" | tr ':' '\n' | tail -n 1
/opt/tools/bin
기존 $PATH를 그대로 둔 채 경로를 덧붙이는 방식입니다. 마지막 항목이 추가한 경로인지 확인합니다.
profile.d 형식 스크립트 만들고 적용
준비: mkdir -p /tmp/demo/profile.d
$ printf 'export PATH=$PATH:/opt/tools/bin\nexport LEARNIX_ENV=practice\n' > /tmp/demo/profile.d/learnix-tools.sh; chmod 644 /tmp/demo/profile.d/learnix-tools.sh; . /tmp/demo/profile.d/learnix-tools.sh; echo "$LEARNIX_ENV"; ls -l /tmp/demo/profile.d/learnix-tools.sh
practice
-rw-r--r--. 1 root root 61 Sep 16 11:08 /tmp/demo/profile.d/learnix-tools.sh
/etc/profile.d에 두는 스크립트와 같은 형태를 /tmp/demo에서 연습합니다. source(.)로 읽어야 현재 셸에 변수가 남습니다. ls -l 출력의 소유자, 크기, 시각은 실행 환경에 따라 다르며, SELinux가 켜진 Rocky Linux 8에서는 권한 문자열 뒤에 점(.)이 붙습니다.
주의할 점
- 스크립트를 ./script.sh 로 실행하면 자식 셸에서 끝나 변수가 남지 않습니다. source 또는 . 으로 읽어야 현재 셸에 적용됩니다.
- export는 현재 셸과 이후 실행되는 프로세스에만 영향을 줍니다. 부모 셸이나 이미 실행 중인 프로세스에는 반영되지 않습니다.
- export PATH=/opt/tools/bin 처럼 $PATH를 빼면 기존 경로가 사라져 ls 같은 기본 명령도 실행되지 않습니다. 이 경우 export PATH=/usr/bin:/bin 처럼 다시 지정하거나 셸을 새로 열면 됩니다.
- 값에 공백이나 특수문자가 있으면 따옴표로 감싸야 합니다. 예: export MSG="hello world"
- export -n은 내보내기 속성만 없애고 변수 값은 현재 셸에 남습니다. 값까지 지우려면 unset을 사용합니다.
- /etc/profile.d 스크립트는 /etc/profile(로그인 셸)과 /etc/bashrc(대화형 비로그인 셸)를 통해 읽히며, 이미 열려 있는 셸에는 다시 로그인하거나 source로 읽기 전까지 반영되지 않습니다.
- /etc/profile.d 아래 파일은 644 권한이면 충분합니다. 777처럼 넓은 권한을 주면 다른 사용자가 내용을 바꿔 모든 사용자의 셸에서 코드가 실행될 수 있습니다.
- /etc/profile이나 /etc/bashrc 본문을 직접 고치면 패키지 업데이트 시 충돌하거나 로그인이 실패할 수 있으므로, /etc/profile.d에 별도 파일을 추가하고 변경 전 원본을 백업하십시오.
이 명령어로 풀 수 있는 실습 문제
브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.
관련 명령어
마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.
