type ๋ช ๋ น์ด๋ ๋ฆฌ๋ ์ค์์ ๋ช ๋ น์ด๊ฐ alias์ธ์ง builtin์ธ์ง ํ์ผ์ธ์ง ๊ตฌ๋ถํ๋ ํต์ฌ ๋๊ตฌ์ ๋๋ค. which·whereis๋ก ํด๊ฒฐ๋์ง ์๋ ๋ฌธ์ ๋ฅผ type์ผ๋ก ์ ํํ ์ง๋จํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ์ต๋๋ค.
๋ฆฌ๋
์ค์์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ์
ธ์ ๋จ์ํ “ํ์ผ์ ์ฐพ๊ณ ์คํํ๋ค”๋ณด๋ค ํจ์ฌ ๋ณต์กํ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์๋ํ ์คํ ํ์ผ์ด ์๋ alias๋ builtin, ํน์ ์ฌ์ฉ์๊ฐ ๋ง๋ function์ด ๋จผ์ ์คํ๋ ์๋ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ด๋ฐ ์ด์ ๋ก, ์ค์ ์ด๋ค ๊ฒ์ด ์คํ๋๋์ง ์ ํํ๊ฒ ์๊ณ ์ถ์ ๋ ๊ฐ์ฅ ๋จผ์ ์ฌ์ฉํด์ผ ํ๋ ๋๊ตฌ๊ฐ type ๋ช ๋ น์ด์ ๋๋ค.
๋จ์ํ ํ์ผ ์์น๋ง ์๋ ค์ฃผ๋ which,
ํ์ค ๋๋ ํฐ๋ฆฌ๋ฅผ ์ค์ฌ์ผ๋ก ํ์ผ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ whereis์ ๋ฌ๋ฆฌ,
type์ alias·builtin·function·file ์ค ์ด๋ค ํํ๊ฐ ์คํ๋๋์ง๋ฅผ ์ ํํ๊ฒ ์๋ ค์ค๋๋ค.
1. ์ type ๋ช ๋ น์ด๋ ์ ์ค์ํ๊ฐ?
๋ฆฌ๋ ์ค ์ ธ(bash, zsh)์ ๋ค์ ์์๋ก ๋ช ๋ น์ ํด์ํฉ๋๋ค.
- alias
- shell builtin
- function
- PATH ๋ด ์คํ ํ์ผ(binary)
์ด ์์ ๋๋ฌธ์ ์๋ ๊ฐ์ ์ผ๋ค์ด ์์ฃผ ๋ฐ์ํฉ๋๋ค:
- which ls๋ /usr/bin/ls๋ฅผ ์ถ๋ ฅํ์ง๋ง ์ค์ ์คํ์ alias
- grep์ด ๋ค๋ฅธ ์ต์ ์ผ๋ก ๋์ํด ๋๋ฒ๊น ์ด ๊ผฌ์ด๋ ๊ฒฝ์ฐ
- PATH๋ฅผ ๋ฐ๊ฟจ๋๋ฐ๋ ์์ ์คํ ํ์ผ์ด ๊ณ์ ํธ์ถ๋๋ ํ์
- BusyBox(OpenWrt) ํ๊ฒฝ์์ symlink ๊ตฌ์กฐ ๋๋ฌธ์ ์คํ ๊ฒฐ๊ณผ๊ฐ ์์๊ณผ ๋ค๋ฆ
์ด ๋ชจ๋ ๋ฌธ์ ๋ฅผ ํ ๋ฒ์ ํด๊ฒฐํด์ฃผ๋ ๋ถ์ ๋๊ตฌ๊ฐ ๋ฐ๋ก type์ ๋๋ค.

2. type ๋ช ๋ น์ด ๊ธฐ๋ณธ ๊ฐ๋
์ ๋ ฅํ ๋ช ๋ น์ด๊ฐ alias์ธ์ง builtin์ธ์ง function์ธ์ง file์ธ์ง ์ ํํ๊ฒ ๊ตฌ๋ถํด์ฃผ๋ ๋ฆฌ๋ ์ค ์ ธ ๋ด๋ถ ๋ถ์ ๋๊ตฌ.
์:
type ls
ls is aliased to `ls --color=auto'
which๋ก๋ ์ ๋ ์ ์ ์๋ ์ ๋ณด๋ค.
3. type ๋ช ๋ น์ด ๊ธฐ๋ณธ ๋ฌธ๋ฒ
type ๋ช
๋ น์ด
โ ์ฌ๋ฌ ๋ช ๋ น์ด ํ ๋ฒ์
type ls grep cd echo
โ type ์ต์
| ์ต์ | ์ค๋ช |
| -a | alias/builtin/function/file ๋ชจ๋ ์ถ๋ ฅ |
| -t | ์ข ๋ฅ๋ง ์ถ๋ ฅ(alias/builtin/file/function ๋ฑ) |
| -p | PATH ๊ฒ์๋ง ์ํ(which์ ์ ์ฌ) |
| -f | alias/function ๋ฌด์ํ๊ณ file๋ง ๊ฒ์ฌ |
4. type์ด ๋ณด์ฌ์ฃผ๋ 4๊ฐ์ง ํํ
type ๋ช ๋ น์ด ์ถ๋ ฅ์ ๋ค์ ๋ค ๊ฐ์ง ์ค ํ๋์ ์ํ๋ค.
1) alias (๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅ)
์:
type ls
์ถ๋ ฅ:
ls is aliased to `ls --color=auto'
๋๋ถ๋ถ์ ๋ฆฌ๋ ์ค ๋ฐฐํฌํ์ ๊ธฐ๋ณธ์ ์ผ๋ก ls, grep, cp ๋ฑ์ด alias ๋์ด์๋ค.
2) shell builtin
type cd
์ถ๋ ฅ:
cd is a shell builtin
ํ์ธํด๋ณด๋ฉด cd๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ์๋๋ผ ์ ธ ๋ด๋ถ ๋ช ๋ น์ด๋ค.
which cd # ์๋ฌด๊ฒ๋ ์ถ๋ ฅ๋์ง ์์
which cd๊ฐ ์๋ฌด ๊ฒ๋ ์ถ๋ ฅํ์ง ์๋ ์ด์ ์ด๊ธฐ๋ ํฉ๋๋ค.
3) function
์ฌ์ฉ์๊ฐ ์ ์ํ ํจ์๋ type์ด ์๋ ค์ค๋ค.
myfunc() { echo hello; }
type myfunc
์ถ๋ ฅ:
myfunc is a function
4) file (์คํ ํ์ผ)
type sleep
์ถ๋ ฅ:
sleep is /usr/bin/sleep
์ค์ ์คํ ํ์ผ์ ํ์ธํ๋ ๊ฐ์ฅ ํ์คํ ๋ฐฉ๋ฒ์ ๋๋ค.
5. type vs which vs whereis

- which → PATH ๊ธฐ๋ฐ์์ ์คํ ํ์ผ ๊ฒฝ๋ก๋ง
- whereis → binary/man/source๊ฐ ํ์ค ๋๋ ํฐ๋ฆฌ ์ด๋์ ์๋์ง
- type → ์ค์ ๋ก “๋ฌด์์ด ์คํ๋๋์ง”๋ฅผ ํ๋จํ๋ ์ ธ ๋ด๋ถ ์ ๋ณด ์ ๊ณต
6. ์ค์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ๋ type ์์
1) grep์ด ์ด์ํ๊ฒ ๋์ํ ๋
type grep
์ถ๋ ฅ:
grep is aliased to `grep --color=auto'
์์์น ๋ชปํ ์ต์ ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ๋๋ถ๋ถ alias ๋๋ฌธ์ ๋๋ค.
2) cd๊ฐ which๋ก ๊ฒ์๋์ง ์๋ ์ด์
which cd
# ์ถ๋ ฅ ์์
type cd
cd is a shell builtin
cd๊ฐ ํ์ผ์ด ์๋๋ผ builtin์ด๊ธฐ ๋๋ฌธ์ด๋ค.
3) PATH ์ถฉ๋ ๋ฌธ์ ์ง๋จ
์๋์ฒ๋ผ gcc๊ฐ ์ฌ๋ฌ ๊ฐ ์์ ๋:
type -a gcc
์ถ๋ ฅ:
gcc is /usr/bin/gcc
gcc is /usr/local/bin/gcc
๋๋:
gcc is hashed (/usr/bin/gcc)
์ด๋ ๊ฒ ์ ์ฒด ๊ฒ์ ๊ฒฝ๋ก๊ฐ ํ์๋๋ฏ๋ก ์ถฉ๋์ ์ ํํ ์ฐพ์ ์ ์์ต๋๋ค.
๋ํ bash์์๋ hash table ๋๋ฌธ์ ๋ค์์ฒ๋ผ ํ์๋๊ธฐ๋ ํฉ๋๋ค:
4) alias ์ ๊ฑฐํ๊ณ ์๋ ๋ช ๋ น์ด ์คํํ๊ธฐ
alias ls='ls --color=auto'
type ls
์ด ์ํ์์ ์๋ ls๋ง ์คํํ๋ ค๋ฉด:
\ls
\๋ alias๋ฅผ ๋ฌด์ํ๊ณ ์ค์ ํ์ผ์ ํธ์ถํฉ๋๋ค.
7. type ์ต์ ์ฌํ ๊ณผ์
1) -a : ์ ์ฒด ๊ฒฝ๋ก์ ํํ ์ถ๋ ฅ
type -a ls
์ถ๋ ฅ:
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
ls is /bin/ls
์ด ๋ช
๋ น ํ๋๋ก “์ ์ฒด ๋ฆฌ์คํธ”๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์
๋ฌธ์ ๋ถ์ ์ ๊ฐ์ฅ ๊ฐ๋ ฅํ ์ต์
์ด๋ค.
2) -t : ์ข ๋ฅ๋ง ์ถ๋ ฅ
type -t cd
builtin
type -t ls
alias
type -t sleep
file
์คํฌ๋ฆฝํธ ์๋ํํ ๋ ๋งค์ฐ ์ ์ฉํ๋ค.
3) -p : which ๋์ฒด
type -p curl
/usr/bin/curl
= which์ ๊ฑฐ์ ๊ฐ์ ๋์
ํ์ง๋ง type์ด ๋ ์์ ์ ์ด๋ค.
4) -f : alias/function ๋ฌด์
type -f ls
์ถ๋ ฅ:
/usr/bin/ls
= alias๋ฅผ ๋ฌด์ํ๊ณ ์๋ ํ์ผ๋ง ์ฐพ์ ์ ์๋ค.
8. ๊ฐ๋ฐ์๊ฐ ์ง์ง๋ก ๋ง์ด ๊ฒช๋ ์ํฉ
1) alias ๋๋ฌธ์ ๋ช ๋ น์ด ๋ค๋ฅด๊ฒ ๋์ํ๋ ๊ฒฝ์ฐ
ํนํ grep์ด ๋ํ์ ์ด๋ค.
์:
grep ํจํด ํ์ผ
์ด๊ฒ ์ฌ์ค์:
grep --color=auto ํจํด ํ์ผ
์ฒ๋ผ ๋์ํ๋ค.
์ด๊ฑธ type์ผ๋ก ํ์ธํด์ผ ํ๋ค.
2) PATH ์ถฉ๋๋ก ์๋ชป๋ gcc๊ฐ ์ ํ๋๋ ๋ฌธ์
์:
arm-linux-gcc๋ฅผ ์คํํ๋๋ฐ gcc๊ฐ ์คํ๋จ
์์ธ์:
alias gcc='gcc -m32'
์ผ ์๋ ์๋ค.
ํด๊ฒฐ ์ํด:
type gcc
type -a gcc
3) ๋ด๋ถ ํจ์(function)์ ๋ฐ์ด๋๋ฆฌ ์ถฉ๋ ๋ฌธ์
์:
function grep() { echo "override"; }
grep test
์ด๋ด ๋ ์ด๋ค ๊ฒ ์คํ๋๋์ง type์ผ๋ก ๋ฐ๋ก ํ์ธํ๋ค.
type grep
grep is a function
4) OpenWrt·์๋ฒ ๋๋ ํ๊ฒฝ์์ BusyBox ์ถฉ๋
BusyBox๋ ํ๋์ /bin/busybox ์คํ ํ์ผ์ด
ls/gzip/mount ๋ฑ ์์ญ ๊ฐ์ ๋ช
๋ น์ด๋ก symlink ๋์ด ์๋ค.
type ls
ls is /bin/ls
ํ์ง๋ง ์ค์ ๋ symlink:
ls -l /bin/ls
/bin/ls -> /bin/busybox
์ด ๊ตฌ์กฐ๋ฅผ ์ดํดํ๋ ค๋ฉด type์ด ํ์๋ค.
9. type + grep + find ์กฐํฉ ํ

โ ์ฌ๋ฌ ๋ช ๋ น์ด์ ์ข ๋ฅ๋ฅผ ํ ๋ฒ์ ๋ณด๊ณ ์ถ์ ๋
for c in ls cd grep awk sed; do type $c; done
โ alias๋ง ์ฐพ๊ธฐ
type -a ls | grep alias
10. FAQ
Q1. type์ด which๋ณด๋ค ๋ ์ ํํ๊ฐ์?
๊ทธ๋ ๋ค.
์ค์ ์คํ๋๋ ํํ(alias/builtin/function/file)๋ฅผ ์๋ ค์ฃผ๋ ์ ์ผํ ๋ช
๋ น์ด๋ค.
Q2. alias๋ฅผ type์ผ๋ก ์ฐพ์ ์ ์๋์?
๋ฌผ๋ก ์ด๋ค.
Q3. which๋ alias๋ฅผ ๋ชป ์ฐพ๋ ์ด์ ๋?
which๋ PATH ๊ธฐ๋ฐ์ด๋ฉฐ alias/builtin์ ๋ชจ๋ฅธ๋ค.
Q4. builtin์ ์ ํ์ผ์ด ์๋๊ฐ์?
์ ๋ด๋ถ์ ๊ตฌํ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
Q5. OpenWrt์์ type์ด ํ์ํ ์ด์ ?
BusyBox ๊ตฌ์กฐ ๋๋ฌธ์ ์ค์ ๋์๊ณผ ํ์ผ ๊ตฌ์กฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ด๋ค.
11. type ๋ช ๋ น์ด๊ฐ ์ฃผ๋ ํต์ฌ ๊ฐ์น
type์ ๋จ์ํ ๋ช
๋ น์ด์ ์ข
๋ฅ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋๊ตฌ๊ฐ ์๋๋ผ,
๋ช
๋ น ์คํ ํ๋ฆ ์ ์ฒด๋ฅผ ๋ถ์ํ๋ ํต์ฌ ๋๊ตฌ์
๋๋ค.
ํนํ ๋ค์ ์ํฉ์์ ๊ฐ๋ ฅํฉ๋๋ค:
- alias·builtin·function ์ถฉ๋ ๋ถ์
- PATH ๋ฌธ์ ๋๋ฒ๊น
- BusyBox(OpenWrt) ํ๊ฒฝ ๊ตฌ์กฐ ๋ถ์
- ์คํฌ๋ฆฝํธ ์๋ํ ์ ๋ช ๋ น์ด ๊ฒ์ฆ
์ค์ ๋ก ๋ฌด์์ด ์คํ๋๋์ง ์๊ฒ ๋๋ฉด
๋ฌธ์ ์ ์์ธ์ด ํ๋์ ๋๋ฌ๋ฉ๋๋ค.
“which๋ ์์น๋ฅผ ์๋ ค์ฃผ๊ณ , type์ ์ง์ค์ ์๋ ค์ค๋ค.”
์ด์ ๊ธ ๋ณด๊ธฐ
[Linux] whereis ์ฌ์ฉ๋ฒ ์ด์ ๋ฆฌ — which์ ๋ค๋ฅธ ํต์ฌ ์ฐจ์ด ์ดํดํ๊ธฐ โจ