PATH ํ๊ฒฝ๋ณ์๋ ๋ฆฌ๋ ์ค ๋ช ๋ น์ด ๊ฒ์ ์์๋ฅผ ๊ฒฐ์ ํ๋ ํต์ฌ ์์์ ๋๋ค. ๋ช ๋ น์ด๊ฐ ์ด๋์ ์คํ๋๋์ง, which·type๊ณผ ์ด๋ค ๊ด๊ณ์ธ์ง, PATH ์ค์ ·์ฐ์ ์์·์ค๋ฅ ํด๊ฒฐ๊น์ง ์๋ฒฝํ ์ ๋ฆฌํ์ต๋๋ค.
๋ฆฌ๋
์ค์์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ๋จ์ํ “ํ์ผ์ ์ฐพ์ ์คํํ๋ค”๊ฐ ์๋๋ผ,
์
ธ์ด ์ ํด๋ ์ฌ๋ฌ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์ค์ ์คํ๋ ๋ช
๋ น์ด๋ฅผ ์ ํํฉ๋๋ค.
์ด ๋จ๊ณ ์ค์์๋ PATH ํ๊ฒฝ๋ณ์๋
“ํ์ผ ์์คํ
์ด๋์์ ์คํ ํ์ผ์ ์ฐพ์ ๊ฒ์ธ๊ฐ”๋ฅผ ๊ฒฐ์ ํ๋ ํต์ฌ ์์์ด๋ฉฐ,
๊ฐ๋ฐ·์ด์·์๋ฒ ๋๋ ํ๊ฒฝ์์ ๊ฐ์ฅ ์์ฃผ ๋ฌธ์ ๋ฅผ ๋ง๋ค๊ธฐ๋ ํฉ๋๋ค.

1. PATH๊ฐ ์ ์ค์ํ๊ฐ?
๋ค์๊ณผ ๊ฐ์ ๊ฒฝํ์ ํด๋ณด์๋ค๋ฉด ๋๋ถ๋ถ PATH ๋๋ฌธ์ ๋๋ค.
- Python์ด ์ฌ๋ฌ ๊ฐ ์ค์น๋ผ์ ์ด๋ค ๋ฒ์ ์ด ์คํ๋๋์ง ํท๊ฐ๋ฆด ๋
- gcc๋ฅผ ์คํํ๋๋ ์ด์ํ๊ฒ ํฌ๋ก์ค ์ปดํ์ผ๋ฌ๊ฐ ์คํ๋ ๋
- OpenWrt์ฒ๋ผ BusyBox ๊ตฌ์กฐ์์ ls/grep์ด ๋ชจ๋ busybox๋ก ์ฐ๊ฒฐ๋ ๋
- which๋ก ๋ณธ ๊ฒฝ๋ก์ ์ค์ ์คํ๋๋ ๋ช ๋ น์ด ๋ค๋ฅผ ๋
PATH๋ฅผ ์ ํํ ์ดํดํด์ผ
which·type·whereis์ ๋์ ์๋ฆฌ๋ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐ๋ฉ๋๋ค.
2. PATH๋ ๋ฌด์์ธ๊ฐ?
PATH๋ ๋ค์๊ณผ ๊ฐ์ ํํ์ ๋ฌธ์์ด์ ๋๋ค:
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
์ฝ๋ก (:)์ผ๋ก ๊ตฌ๋ถ๋ ๋๋ ํฐ๋ฆฌ๋ค์ ๋ชฉ๋ก์ด๋ฉฐ,
๋ฆฌ๋
์ค ์
ธ์ ์ผ์ชฝ๋ถํฐ ์ค๋ฅธ์ชฝ๊น์ง ์์๋๋ก ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ฒ์ํ๋ค.
์ฆ, PATH ์์ = ๋ช ๋ น์ด ์คํ ์ฐ์ ์์.
3. ํ์ฌ PATH ํ์ธํ๊ธฐ
echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
4. ๋ฆฌ๋ ์ค ์ ธ ๋ด๋ถ ์คํ ์๊ณ ๋ฆฌ์ฆ

๋ฆฌ๋ ์ค ์ ธ์ ๋ค์ ์์๋ก ๋ช ๋ น์ด๋ฅผ ํ์ธํ๋ค.
- alias์ธ์ง ํ์ธ
- shell builtin์ธ์ง ํ์ธ
- function์ธ์ง ํ์ธ
- PATH์ ํฌํจ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์์๋ถํฐ ๊ฒ์
- ์ฒ์ ๋ฐ๊ฒฌ๋ ์คํ ํ์ผ์ ์คํ
์ฆ, PATH๋ 4๋จ๊ณ์์ ์ฌ์ฉ๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ฅด๋ฉด
which/type/whereis ํ๋์ด ์ ๋ค๋ฅธ์ง ์ดํดํ ์ ์๋ค.
5. PATH์ ์์๊ฐ ์ค์ํ ์ด์
์๋ฅผ ๋ค์ด PATH๊ฐ ๋ค์์ฒ๋ผ ์ค์ ๋์ด ์๋ค๊ณ ํ์:
/opt/bin:/usr/bin:/bin
ls ์คํ ์:
- /opt/bin/ls๊ฐ ์๋ค๋ฉด ๊ทธ๊ฒ ์คํ๋จ
- /opt/bin/ls๊ฐ ์๋ค๋ฉด /usr/bin/ls ์คํ
- ๊ทธ๋๋ ์์ผ๋ฉด /bin/ls
“์์ ์๋ ๋๋ ํฐ๋ฆฌ๊ฐ ๋ฌด์กฐ๊ฑด ์ฐ์ ์์๊ฐ ๋๋ค.”
๊ทธ๋์ PATH๋ฅผ ์๋ชป ์ค์ ํ๋ฉด:
- gcc ๋ฒ์ ์ด ๋ฐ๋
- python์ด ๊ฐ์ ํ๊ฒฝ ๊ฒ์ผ๋ก ์คํ๋จ
- ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋ฑํ ๊ณณ์์ ์คํ๋จ
์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
6. PATH ์๋ชป ์ค์ ์ ๋ฐ์ํ๋ ๋ฌธ์
1) which๋ ์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก๋ฅผ ๋ณด์ฌ์ฃผ์ง๋ง type์ด ๋ค๋ฅธ ๊ฑธ ๋ณด์ฌ์ค
PATH๊ฐ ๊ผฌ์ฌ ์์ผ๋ฉด:
which python
/usr/bin/python
ํ์ง๋ง ์คํ๋๋ ๊ฑด:
/home/user/.local/bin/python
์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
ํด๊ฒฐ:
type -a python
2) gcc๊ฐ ์๋ฑํ ๋ฒ์ ์ผ๋ก ์คํ๋๋ ๋ฌธ์
์:
gcc --version
์ด ๋ช ๋ น์ด arm cross-compiler๋ฅผ ๊ฐ๋ฆฌํฌ ์ ์์.
์ค์ ๋ก๋:
/opt/toolchain/bin/gcc
3) PATH์ ์๋ ๋ฐ์ด๋๋ฆฌ๋ which๊ฐ ์ฐพ์ง ๋ชปํจ
which myapp
# ์ถ๋ ฅ ์์
ํ์ง๋ง ์ค์ ๋ก๋:
/opt/myapp/bin/myapp
์ด๋ด ๋ whereis๋ ์ฐพ์ ์ ์์.
7. PATH์ ์๋ก์ด ๊ฒฝ๋ก ์ถ๊ฐํ๊ธฐ
1) ์ธ์ ๋ด์์ ์ผ์์ ์ผ๋ก ์ถ๊ฐ
export PATH=/opt/custom/bin:$PATH
= ์๋ก์ด ๊ฒฝ๋ก๋ฅผ ์์ ์ถ๊ฐ (์ฐ์ ์์ ๋์)
export PATH=$PATH:/opt/custom/bin
= ๊ฒฝ๋ก๋ฅผ ๋ค์ ์ถ๊ฐ (์ฐ์ ์์ ๋ฎ์)
2) ์๊ตฌ์ ์ผ๋ก PATH ์ค์
์๋ ํ์ผ์ ์์ฑํด์ผ ํ๋ค.
| ํ์ผ | ์ ์ฉ ๋ฒ์ |
| ~/.bashrc | ์ผ๋ฐ shell ์คํ ์ |
| ~/.profile | login shell |
| /etc/profile | ์์คํ ์ ์ฒด |
| /etc/environment | ๋ก๊ทธ์ธ ์ ์ด๊ธฐ ํ๊ฒฝ |
์ผ๋ฐ ์ฌ์ฉ์๋ผ๋ฉด ~/.bashrc๊ฐ ๊ฐ์ฅ ์ ์ ํ๋ค.
8. PATH ์ค์ ์ ๊ฐ์ฅ ์ค์ํ ๊ท์น 3๊ฐ์ง
1) ์์ ์ฌ์๋ก ์ฐ์ ์์๊ฐ ๋๋ค
์ต์ด ๋ฐ๊ฒฌ๋ ์คํ ํ์ผ์ด ์ฌ์ฉ๋๋ค.
2) ๋๋ ํฐ๋ฆฌ ์ฌ์ด ๊ตฌ๋ถ์๋ ๋ฐ๋์ ์ฝ๋ก (:)
์ผํ๋ ๊ณต๋ฐฑ์ด ์๋๋ค.
3) PATH ์์ ์ํ์ฑ
๋ค์์ฒ๋ผ ํ๋ฉด PATH๊ฐ ์์ ํ ์ฌ๋ผ์ง:
export PATH=/opt/bin
ํด๊ฒฐ:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
9. PATH๋ฅผ ๋ง๊ฐ๋จ๋ ธ์ ๋ ๋ณต๊ตฌํ๋ ๋ฐฉ๋ฒ
PATH๊ฐ ์์๋์ด ๊ธฐ๋ณธ ๋ช ๋ น์ด๋ ์คํ๋์ง ์์ ์ ์๋ค.
์:
ls: command not found
๋ณต๊ตฌ:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
OpenWrt๋ผ๋ฉด:
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
10. PATH + which + type์ด ํจ๊ป ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์

์๋ฅผ ๋ค์ด python์ด ์ด์ํ๊ฒ ์คํ๋ ๋:
- which๋ก ํ์ผ ์์น ํ์ธ
which python
- type์ผ๋ก alias/builtin/ํจ์ ์ฌ๋ถ ํ์ธ
type python
- PATH ์ ์ฒด ํ์ธ
echo $PATH
- PATH ์์ ๋ณ๊ฒฝ
export PATH=/opt/bin:$PATH
์ด 4๋จ๊ณ๋ก ๋๋ถ๋ถ์ PATH ๋ฌธ์ ๋ ํด๊ฒฐ๋๋ค.
11. PATH๊ฐ ์ค์ํ ์ค์ ์ฌ๋ก 7๊ฐ์ง ์ ๋ฆฌ
1) ๊ฐ์ํ๊ฒฝ Python์ด ๊ธฐ๋ณธ Python์ ๋ฎ์ด์
/home/user/venv/bin/python
์ด๊ฒ PATH ์์ ์ค๋ฉด ๋ฌด์กฐ๊ฑด venv python ์คํ๋จ.
2) gcc ์ถฉ๋
toolchain์ PATH ์์ ๋ฃ์ง ์์ผ๋ฉด native gcc๊ฐ ์คํ๋จ.
3) OpenWrt์์ BusyBox ๊ตฌ์กฐ

OpenWrt PATH๋ ๋งค์ฐ ์งง๋ค.
/bin:/sbin:/usr/bin:/usr/sbin
๊ทธ๋์ ๋๋ถ๋ถ /bin/busybox๋ก ์ฐ๊ฒฐ๋๋ค.
4) make๊ฐ ์๋ฑํ ๋ฒ์ ์ ์คํํ๋ ๋ฌธ์
Conda, NixOS ๋ฑ ํ๊ฒฝ์์ ์์ฃผ ๋ฐ์.
5) sudo ์ PATH๊ฐ ๋ฌ๋ผ์ง๋ ๋ฌธ์
sudo๋ ๋ณด์ ๋๋ฌธ์ ๋ค๋ฅธ PATH๋ฅผ ์ฌ์ฉํจ.
sudo echo $PATH # ๋ฌด์๋ฏธ
sudo env | grep PATH
6) Docker์์ PATH๊ฐ ๋ค๋ฆ
์ปจํ ์ด๋๋ง๋ค PATH ๊ตฌ์กฐ๊ฐ ๋ฌ๋ผ ๋๋ฒ๊น ์ ํผ๋ ๊ฐ๋ฅ.
7) cron์์ PATH๊ฐ ๊ทน๋๋ก ์ถ์๋จ
cron์ ๊ธฐ๋ณธ PATH๊ฐ ๋ค์์ฒ๋ผ ๋งค์ฐ ์งง๋ค.
/usr/bin:/bin
๊ทธ๋์ ์คํฌ๋ฆฝํธ์์ ๋ช ๋ น์ด๊ฐ ์ ์คํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์.
12. PATH๋ฅผ ์์ ํ๊ฒ ์ค์ ํ๋ 3๊ฐ์ง ํจํด
1) ์์ ์ถ๊ฐ (์ฐ์ ์์ ์ฌ๋ฆฌ๊ธฐ)
export PATH=/opt/bin:$PATH
2) ๋ค์ ์ถ๊ฐ (๊ธฐ์กด ์ ์ง)
export PATH=$PATH:/opt/bin
3) ํน์ ๋ช ๋ น์ด๋ง ํ์ํ ๋ function ์ฌ์ฉ
mygcc() {
PATH=/opt/gcc/bin:$PATH gcc "$@"
}
13. PATH ๋๋ฒ๊น ์ค์ ๋ช ๋ น์ด
1) PATH ๋์ด
echo $PATH | tr ':' '\n'
2) ์คํํ์ผ ํ๋ณด ์ ๋ถ ์ถ๋ ฅ
type -a python
3) PATH ์ ํจ์ฑ ๊ฒ์ฌ
for d in $(echo $PATH | tr ':' '\n'); do [ -d "$d" ] || echo "$d is missing"; done
4) PATH์ ํน์ ๋ฌธ์์ด๋ง ์๋์ง ํ์ธ
echo $PATH | grep opt
14. FAQ
Q1. which, type, whereis์ PATH๋ ๋ฌด์จ ๊ด๊ณ์ธ๊ฐ?
- which → PATH์์ ์คํ ํ์ผ ๊ฒ์
- type → PATH + alias + builtin๊น์ง ๋ถ์
- whereis → PATH ์ธ ๋๋ ํฐ๋ฆฌ๊น์ง ๊ฒ์
Q2. PATH ์์๋ฅผ ์๋ชป ๋ฐ๊พธ๋ฉด ์ ์คํ์ด ๋ง๊ฐ์ง?
์ ๋๋ ํฐ๋ฆฌ๊ฐ ์ฐ์ ์์๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ด๋ค.
Q3. sudo๋ ์ PATH๊ฐ ๋ฌ๋ผ์?
๋ณด์ ๋๋ฌธ์ด๋ฉฐ, /etc/sudoers์์ secure_path๋ก ์ค์ ๋จ.
Q4. cron์์ ๋ช ๋ น์ด ์ ๋์๊ฐ๋ ์ด์ ๋?
๊ธฐ๋ณธ PATH๊ฐ ๋งค์ฐ ์งง๊ธฐ ๋๋ฌธ.
Q5. PATH๋ฅผ ์ด๊ธฐํํ๋ ค๋ฉด?
๊ธฐ๋ณธ PATH๋ฅผ exportํ๋ฉด ๋๋ค.
Q6. PATH์ .(ํ์ฌ ๋๋ ํฐ๋ฆฌ)๋ฅผ ๋ฃ์ด๋ ๋๋์?
๋น์ถ์ฒ. ๋ณด์ ์ทจ์ฝ์ ์ด ๋ฐ์ํจ.
Q7. PATH ์์ ํ ls๋ ์คํ ์ ๋ ๋?
์ ๋ ๊ฒฝ๋ก๋ก ์คํ ๊ฐ๋ฅ:
/bin/ls
Q8. type์ด alias๋ผ๊ณ ๋ณด์ฌ์ฃผ๋ฉด ์ด๋ป๊ฒ ์๋ ๋ช ๋ น์ ์คํํ๋์?
\ls
Q9. PATH์ PYTHONPATH๋ ๋ค๋ฅธ๊ฐ์?
์์ ํ ๋ค๋ฅธ ๋ณ์.
PYTHONPATH๋ ํ์ด์ฌ ๋ชจ๋ ๊ฒ์ ๊ฒฝ๋ก.
Q10. PATH๊ฐ ๋๋ฌด ๊ธธ๋ฉด ๋ฌธ์ ๊ฐ ์๋์?
์ฑ๋ฅ์ ๊ฑฐ์ ์ํฅ ์์ง๋ง, ๊ด๋ฆฌ ๋ณต์ก๋ ์ฆ๊ฐ.
15. PATH๋ฅผ ์ดํดํ๋ฉด ๋ฆฌ๋ ์ค๋ฅผ ์์ ํ ์ดํดํ๊ฒ ๋๋ค
PATH๋ ๋จ์ํ ๋ฌธ์์ด์ด ์๋๋ผ
๋ฆฌ๋
์ค ๋ช
๋ น ์คํ ๊ณผ์ ์ ์ฒด๋ฅผ ์ข์ฐํ๋ ํต์ฌ ์์์
๋๋ค.
which, whereis, type์ ๋์์ 100% ์ดํดํ๋ ค๋ฉด
๋ฐ๋์ PATH ๊ตฌ์กฐ๋ฅผ ์ดํดํด์ผ ํ๋ค.
“๋ช ๋ น์ด๊ฐ ์ด๋์ ์๊ณ , ์ด๋ค ์์๋ก ์คํ๋๋์ง ์๋ฉด ๋๋ฒ๊น ์ ์ด๋ฏธ ์ ๋ฐ ๋๋ ๊ฒ์ด๋ค.”
์ด์ ๊ธ ๋ณด๊ธฐ
[Linux] type ์ฌ์ฉ๋ฒ ์ด์ ๋ฆฌ — which๋ก๋ ๋ชป ์ก๋ ์คํ ์๋ฆฌ ํ์ ํ๊ธฐ โจ