๋ฆฌ๋ ์ค ํ๊ฒฝ๋ณ์๋ ์๊ณผ ํ๋ก๊ทธ๋จ ์คํ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ํต์ฌ ์์์ ๋๋ค. export, env, printenv ์ฐจ์ด๋ถํฐ ํ๊ฒฝ๋ณ์์ ์์ฑ·์กฐํ·์ ๋ฌ ๋ฐฉ์๊น์ง ์ค์ ์ค์ฌ์ผ๋ก ์๋ฒฝํ๊ฒ ์ ๋ฆฌํ์ต๋๋ค.
1. ํ๊ฒฝ๋ณ์๋ ์ ์ค์ํ๊ฐ?

๋ฆฌ๋
์ค์์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ๋จ์ํ ํ๋ก๊ทธ๋จ๋ง ์คํ๋๋ ๊ฒ์ด ์๋๋ค.
ํด๋น ๋ช
๋ น์ด๋ “ํ๊ฒฝ(environment)”์ด๋ผ๋ ํฐ ์ปจํ
์คํธ์์ ๋์ํ๋ค.
์ด ํ๊ฒฝ์๋ ๋ค์๊ณผ ๊ฐ์ ์ ๋ณด๊ฐ ํฌํจ๋๋ค.
- PATH
- ํ ๋๋ ํฐ๋ฆฌ
- ์ธ์ด/๋ก์ผ์ผ ์ค์
- ํ๋กฌํํธ ํํ
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒ์ ๊ฒฝ๋ก
- ์คํ ์ ํ์ํ ๊ตฌ์ฑ ์ ๋ณด
์ด ๋ชจ๋ ๊ฒ์ด ํ๊ฒฝ๋ณ์(Environment Variable) ๋ก ์ ์ฅ๋๋ค.
์๋ฅผ ๋ค์ด, PATH๋ฅผ ์๋ชป ์ค์ ํ๋ฉด ๋ชจ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋์ง ์๋๋ค.
LANG์ด ์๋ชป ์ค์ ๋๋ฉด ๋ฌธ์ ๊นจ์ง์ด ๋ฐ์ํ๋ค.
์๋ฒ ๋๋·OpenWrt ํ๊ฒฝ์์๋
LD_LIBRARY_PATH๊ฐ ์๋ชป๋๋ฉด ์คํ ํ์ผ์ด ์์ ๋ชป ๋์๊ฐ๋ค.
๊ทธ๋์ ํ๊ฒฝ๋ณ์๋ ๋ฆฌ๋ ์ค ์ ์ฒด ์คํ ๊ตฌ์กฐ์์ ํต์ฌ ์ญํ ์ ํ๋ค.
์ด ํ๊ฒฝ์ ๊ตฌ์ฑํ๊ณ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๊ฐ ๋ฐ๋ก:
- export
- env
- printenv
์ด๋ค.
์ด ๊ธ์์๋ ์ด ์ธ ๊ฐ์ง ๋ช
๋ น์ด๋ฅผ ์ค์ฌ์ผ๋ก
๋ฆฌ๋
์ค ํ๊ฒฝ๋ณ์์ ๊ฐ๋
๋ถํฐ ์ค์ ๊น์ง ๋ชจ๋ ์ ๋ฆฌํ๋ค.
2. ํ๊ฒฝ๋ณ์๋ ๋ฌด์์ธ๊ฐ?

ํ๊ฒฝ๋ณ์(Environment Variable)๋ ํ๋ก์ธ์ค๊ฐ ์คํ๋ ๋ ์ ๋ฌ๋๋ ์ค์ ๊ฐ์ด๋ค.
์ฆ,
ํ๋ก๊ทธ๋จ์ด ์์ํ๊ธฐ ์ ์ ๋ฏธ๋ฆฌ ์ฃผ์ด์ง๋ ์ ์ญ ์ต์ ์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์ ๋ณ์๋ค์ ๋๋ถ๋ถ์ ๋ก๊ทธ์ธ ํ๊ฒฝ์์ ๊ธฐ๋ณธ์ผ๋ก ์กด์ฌํ๋ค.
PATH=/usr/bin:/bin
HOME=/home/roroppwa
LANG=ko_KR.UTF-8
์ด ๊ฐ๋ค์ ๋จ์ํ ๋ฌธ์์ด์ด ์๋๋ผ:
- ์ด๋ค ํ๋ก๊ทธ๋จ์ด ์คํ๋ ์ ์๋์ง(PโATH)
- ์ด๋ค ์ธ์ด๋ก ์ถ๋ ฅํ ๊ฒ์ธ์ง(LANG)
- ์ด๋๊ฐ ๊ธฐ๋ณธ ๊ฒฝ๋ก์ธ์ง(HOME)
- ์ด๋ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฝ์ ๊ฒ์ธ์ง(LD_LIBRARY_PATH)
๊ฐ์ ์ค์ํ ์ญํ ์ ํ๋ค.
3. Shell Variable vs Environment Variable

ํ๊ฒฝ๋ณ์๋ฅผ ์ดํดํ์ง ๋ชปํ๋ ๊ฐ์ฅ ํฐ ์ด์ ๋
๋ ๊ฐ์ ๋ณ์๊ฐ ๊ฒ๋ณด๊ธฐ์ ๋น์ทํ์ง๋ง, ๋์ ๋ฐฉ์์ด ์์ ํ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
| ์ข ๋ฅ | ์ค๋ช | export ํ์ ์ฌ๋ถ |
| Shell Variable | ํ์ฌ ์ ๋ด๋ถ์์๋ง ์ ํจํ ๋ณ์ | โ ํ์ ์์ |
| Environment Variable | ์์ ํ๋ก์ธ์ค(์คํ๋ ํ๋ก๊ทธ๋จ)์๋ ์ ๋ฌ๋๋ ๋ณ์ | โ export ํ์ |
์ฆ:
VAR="hello"
๋ ์ ๋ด๋ถ์๋ง ์กด์ฌํ๋ค.
ํ๋ก๊ทธ๋จ์ด ์ด ๋ณ์๋ฅผ ๋ฐ๊ฒ ํ๋ ค๋ฉด:
export VAR="hello"
์ด๋ ๊ฒ ํด์ผ environment ๋ณ์๋ก ์น๊ฒฉ๋์ด ํ๋ก๊ทธ๋จ์ ์ ๋ฌ๋๋ค.
4. export : ํ๊ฒฝ๋ณ์๋ฅผ “ํ๋ก์ธ์ค์ ์ ๋ฌ”ํ๋ ๋ช ๋ น์ด
export๋ ๋ณ์๋ฅผ ์์ ํ๋ก์ธ์ค์ ์ ๋ฌํ ์ ์๋๋ก ๋ฑ๋กํ๋ ๋ช ๋ น์ด๋ค.
1) ๊ธฐ๋ณธ ๋ฌธ๋ฒ
export ๋ณ์๋ช
=๊ฐ
์:
export PATH=/opt/bin:$PATH
2) export์ ์ค์์ฑ ์ค์ ์์
์๋ฅผ ๋ค์ด ์๋์ฒ๋ผ ๋ณ์๋ง ์ ์ธํ๋ค๋ฉด:
MYVAR="hello"
์ ๋ด๋ถ์์๋:
echo $MYVAR
hello
ํ์ง๋ง ํ๋ก๊ทธ๋จ์๊ฒ๋ ์ ๋ฌ๋์ง ์๋๋ค.
์๋์ฒ๋ผ ํด์ผ ํ๋ค:
export MYVAR
๋๋ ํ ๋ฒ์:
export MYVAR="hello"
์ด์ ์คํ๋๋ ๋ชจ๋ ํ๋ก๊ทธ๋จ์ MYVAR=hello ๊ฐ์ ์ ๋ฌ๋ฐ๊ฒ ๋๋ค.
5. env : ํ๊ฒฝ๋ณ์ ๋ชฉ๋ก์ ํ์ธํ๊ฑฐ๋ ํน์ ํ๊ฒฝ์ผ๋ก ํ๋ก๊ทธ๋จ ์คํ
โ env์ ๋ ๊ฐ์ง ์ฉ๋
- ํ์ฌ ํ๊ฒฝ๋ณ์ ๋ฆฌ์คํธ ์กฐํ
- ์์ ํ๊ฒฝ์ ์ ์ฉํ์ฌ ํ๋ก๊ทธ๋จ ์คํ
1) ํ์ฌ ํ๊ฒฝ๋ณ์ ์กฐํ
env
์ถ๋ ฅ ์:
PATH=/usr/bin:/bin
HOME=/home/roroppwa
LANG=ko_KR.UTF-8
SHELL=/bin/zsh
2) ํน์ ํ๊ฒฝ์์ ํ๋ก๊ทธ๋จ์ ์คํํ๊ธฐ
์:
env VAR=value command
์ด ๋ช
๋ น์ ํ์ฌ ์์๋ ์ํฅ์ ์ฃผ์ง ์๊ณ ,
ํ๋ก๊ทธ๋จ์ ์คํํ ๋๋ง ํ๊ฒฝ๋ณ์๋ฅผ ์ ๋ฌํ๋ค.
์:
env DEBUG=1 ./app
ํ๋ก๊ทธ๋จ์ DEBUG=1 ์ํ์์ ์คํ๋์ง๋ง
์ ๋ณ์๋ ๋ณํ์ง ์๋๋ค.
์ด๊ฑด ๋งค์ฐ ์ค์ํ ํน์ง์ด๋ค.
6. printenv : ํน์ ํ๊ฒฝ๋ณ์๋ง ์ถ๋ ฅ
env์ ๋ค๋ฅด๊ฒ, printenv๋ ํน์ ๋ณ์๋ง ํ์ธํ ๋ ์ฌ์ฉํ๋ค.
printenv PATH
/usr/bin:/bin
๋๋ ์ ์ฒด ์ถ๋ ฅ:
printenv
env์ ๊ฑฐ์ ์ ์ฌํ์ง๋ง
์คํฌ๋ฆฝํธ์์ ํน์ ๋ณ์ ์กฐํ ์์๋ printenv๊ฐ ๋ ์ ํฉํ๋ค.
7. export · env · printenv ์ฐจ์ด๋ฅผ ํ๋์ ์ ๋ฆฌ

| ๊ธฐ๋ฅ | export | env | printenv |
| ๋ณ์ ์ค์ | โ | โ(์์) | โ |
| ๋ณ์ ์กฐํ | โ(๋ด๋ถ) | โ | โ |
| ํ๋ก๊ทธ๋จ ์คํ ์ ์ ๋ฌ | โ(์๊ตฌ) | โ(์์) | โ |
| ์คํฌ๋ฆฝํธ์์ ๋ง์ด ์ฌ์ฉ | โโ | โ | โโโ |
| PATH ์ค์ | โ | ๊ฐ๋ฅ | โ |
ํ ๋ฌธ์ฅ ์์ฝ
- export → ๋ณ์ ์์ฑ + ํ๊ฒฝ๋ณ์ ๋ฑ๋ก
- env → ํ์ธ ๋๋ ํน์ ํ๊ฒฝ์ผ๋ก ์คํ
- printenv → ํน์ ๋ณ์ ์ถ๋ ฅ
8. ํ๊ฒฝ๋ณ์๊ฐ ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ์ ๋ฌ๋๋ ๊ณผ์
์ด ๋ถ๋ถ์ ๋ง์ ๊ฐ๋ฐ์๊ฐ ์คํดํ๋ ๋ถ๋ถ์ด๋ค.
ํ๋ก์ธ์ค ์์ฑ ๊ณผ์ ์ ์๋์ฒ๋ผ ์ด๋ฃจ์ด์ง๋ค:

ํ๋ก์ธ์ค ๊ตฌ์กฐ:
Shell → fork() → execve() → ํ๋ก๊ทธ๋จ
์ฌ๊ธฐ์ execve()๋ ํ๊ฒฝ๋ณ์ ๋ฐฐ์ด์ ํ๋ก์ธ์ค์ ์ ๋ฌํ๋ค.
exportํ์ง ์์ ๋ณ์๋ execve์์ ํ๊ฒฝ ๋ฐฐ์ด์ ํฌํจ๋์ง ์๋๋ค.
๊ทธ๋์ ํ๋ก๊ทธ๋จ์ด ๊ทธ ๊ฐ์ ์ฝ์ ์ ์๋ค.
9. PATH์ ํ๊ฒฝ๋ณ์์ ๊ด๊ณ
PATH๋ ํ๊ฒฝ๋ณ์ ์ค ๊ฐ์ฅ ์ค์ํ ๋ณ์๋ค.
export PATH=/opt/custom/bin:$PATH
์ด ํ ์ค์ด ์๋ฏธํ๋ ๊ฒ์:

- ๋ช ๋ น์ด ๊ฒ์ ์์๊ฐ ๋ฐ๋
- ๊ฐ์ ์ด๋ฆ์ ๋ช ๋ น์ด๋ผ๋ ๋ค๋ฅธ ๋ฒ์ ์ด ์คํ๋ ์ ์์
- Homebrew·SDK·Toolchain ์ฌ์ฉ ์ ์ถฉ๋ ๋ฐ์ ๊ฐ๋ฅ
ํนํ macOS ๋๋ ์๋ฒ ๋๋ ํ๊ฒฝ์์๋ PATH ์ฐ์ ์์๊ฐ ์ค๋ฌด ๋ฌธ์ ์ 80%๋ฅผ ์ฐจ์งํ๋ค.
10. ํ๊ฒฝ๋ณ์๋ ์ด๋์ ์ ์ฅํด์ผ ํ ๊น?
ํ๊ฒฝ๋ณ์๋ ์ค์ ํ์ผ๋ง๋ค ๋ชฉ์ ์ด ๋ค๋ฅด๋ค.
| ์ค์ | ๋ชฉ์ |
| ~/.bashrc | bash ์ธํฐ๋ํฐ๋ธ ํ๊ฒฝ |
| ~/.zshrc | zsh ์ธํฐ๋ํฐ๋ธ ํ๊ฒฝ |
| ~/.profile | ๋ก๊ทธ์ธ ํ๊ฒฝ |
| /etc/profile | ์์คํ ์ ์ฒด ํ๊ฒฝ |
| /etc/environment | ๋ก๊ทธ์ธ ์ด์ ์ด๊ธฐ ํ๊ฒฝ |
์:
export PATH="$HOME/bin:$PATH"
→ zsh ์ฌ์ฉ์๋ผ๋ฉด ~/.zshrc์ ๋ฃ๋ ๊ฒ ์ผ๋ฐ์ .
11. ํ๊ฒฝ๋ณ์ ์ค์ ์์ 10๊ฐ์ง
1) ์์๋ก LANG ๋ณ๊ฒฝ
env LANG=C ls
2) ํ๋ก๊ทธ๋จ ๋๋ฒ๊ทธ ๋ชจ๋ ์คํ
env DEBUG=1 ./server
3) OpenWrt / ์๋ฒ ๋๋์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ฒฝ๋ก ์ง์
export LD_LIBRARY_PATH=/usr/local/lib
4) Go ๋น๋ ํ๊ฒฝ ์ค์
export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
5) Python virtualenv ํ์ฑํ
export VIRTUAL_ENV="$HOME/venv"
export PATH="$VIRTUAL_ENV/bin:$PATH"
6) Java ํ๊ฒฝ ์ค์
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk
export PATH=$JAVA_HOME/bin:$PATH
7) Proxy ์ค์
export http_proxy=http://127.0.0.1:8080
8) Editor ๊ธฐ๋ณธ ์ค์
export EDITOR=vim
9) PATH ์ฌ์ ์
export PATH=/usr/local/bin:/usr/bin:/bin
10) ํ๊ฒฝ๋ณ์ ์ญ์
unset VAR
11. ํ๊ฒฝ๋ณ์ ๋๋ฒ๊น ํ
1) PATH๋ฅผ ์ค๋ฐ๊ฟ์ผ๋ก ๋ณด๊ธฐ
echo $PATH | tr ':' '\n'
2) ํน์ ๋ณ์ ์ฐพ๊ธฐ
env | grep JAVA
3) ๋ชจ๋ ๋ณ์ ์ค ์ ์๋ ํญ๋ชฉ ๋ณด๊ธฐ
set
4) ์์ ํ๋ก๊ทธ๋จ์์ ๋ณ์ ํ์ธ
export TEST=123
bash -c 'echo $TEST'
12. FAQ : ์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ๋ฌป๋ ์ง๋ฌธ ์ ๋ฆฌ
Q1. export๋ ๋ฐ๋์ ํ์ํ๊ฐ์?
์์ ํ๋ก๊ทธ๋จ์ ๋ณ์๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ๋ฐ๋์ ํ์ํจ.
Q2. env์ printenv๋ ๋ญ๊ฐ ๋ค๋ฅธ๊ฐ์?
env๋ ์คํ·์กฐํ ๋ ๋ค, printenv๋ ์กฐํ ์ ์ฉ.
Q3. env VAR=value cmd ๋ฐฉ์์ ์ ์ ์ฉํ๊ฐ์?
ํ์ฌ ์ ธ์ ๋๋ฝํ์ง ์๊ณ ์ผ์์ ํ๊ฒฝ์์ ํ๋ก๊ทธ๋จ์ ์คํ ๊ฐ๋ฅ.
Q4. ํ๊ฒฝ๋ณ์๋ ์ด๋ ํ์ผ์ ๋ฃ์ด์ผ ํ๋์?
zshrc, bashrc, profile ๋ฑ ์ฌ์ฉ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅด๋ค.
Q5. PATH๋ ์ ์์ฃผ exportํด์ผ ํ๋์?
ํ๋ก๊ทธ๋จ ์คํ ์์๋ฅผ ๊ฒฐ์ ํ๊ธฐ ๋๋ฌธ์.
Q6. unset๊ณผ export์ ์ฐจ์ด๋?
unset์ ํ๊ฒฝ๋ณ์ ์ญ์ .
Q7. sudo ์ ํ๊ฒฝ๋ณ์๊ฐ ์ ์ ์ฉ ์ ๋๋์?
sudo๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์์ ํ๊ฒฝ๋ณ์ ์ ๋ฌ์ ๋ง์.
Q8. OpenWrt์์ printenv์ env๊ฐ ์ ์ฐจ์ด๊ฐ ์๋์?
BusyBox ๊ธฐ๋ฐ์ด๋ผ ๋์์ด ๊ฐ๋จํ ๋ฒ์ .
Q9. ํ๊ฒฝ๋ณ์ ์ด๋ฆ ๊ท์น์?
๋๋ฌธ์ ์ฌ์ฉ ๊ถ์ฅ.
Q10. ์์ ๋ฐ๊พธ๋ฉด ํ๊ฒฝ๋ณ์๋ ๋ฌ๋ผ์ง๋์?
zsh vs bash ํ๊ฒฝ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ์ฉ๋จ.
13. ํ๊ฒฝ๋ณ์๋ ๋ฆฌ๋ ์ค ์คํ ํ๊ฒฝ์ ‘๊ทผ๋ณธ ๊ตฌ์กฐ’
ํ๊ฒฝ๋ณ์๋ฅผ ์๊ณ ์ฐ๋ ์ฌ๋๊ณผ ๋ชจ๋ฅด๋ ์ฌ๋์ ๊ฐ๋ฐ ์๋๋ ์ ๋ง ๋ค๋ฅด๋ค.
- export๋ ํ๊ฒฝ๋ณ์๋ฅผ ๋ฑ๋กํ๋ ๊ด๋ฌธ
- env๋ ์์ ํ๊ฒฝ ์คํ
- printenv๋ ์กฐํ ์ ๋ฌธ
- PATH๋ ์คํ ์ฐ์ ์์๋ฅผ ๊ฒฐ์
ํ๊ฒฝ๋ณ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ฉด
๋ฆฌ๋
์ค ๊ฐ๋ฐ, ์๋ฒ ์ด์, OpenWrt, ์๋ฒ ๋๋ ์์คํ
์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ค์
๋ฐ๋ฅ๋ถํฐ ํด๊ฒฐํ ์ ์๊ฒ ๋๋ค.
“ํ๊ฒฝ๋ณ์๋ฅผ ์ดํดํ๋ฉด, ์ ธ์ ์ง๋ฐฐํ๊ฒ ๋๋ค.”
์ด์ ๊ธ ๋ณด๊ธฐ
[Linux] zsh ์ฌ์ฉ์ ํ์ ์ค์ zshrc — ํ๋กฌํํธ·ํ๊ฒฝ๋ณ์·alias ์๋ฒฝ ์ ๋ฆฌ ๐ง