๊ฐœ๋ฐœ๋…ธํŠธ/Linux

[Linux] type ๋ช…๋ น์–ด, which๋กœ๋Š” ๋ชป ์žก๋Š” ์‹คํ–‰ ์›๋ฆฌ ํŒŒ์•…ํ•˜๊ธฐ โœจ

๋กœ๋กœ๋ฝœ 2025. 12. 11. 07:30

type ๋ช…๋ น์–ด๋Š” ๋ฆฌ๋ˆ…์Šค์—์„œ ๋ช…๋ น์–ด๊ฐ€ alias์ธ์ง€ builtin์ธ์ง€ ํŒŒ์ผ์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๋Š” ํ•ต์‹ฌ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. which·whereis๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๋ฅผ type์œผ๋กœ ์ •ํ™•ํžˆ ์ง„๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค์—์„œ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์…ธ์€ ๋‹จ์ˆœํžˆ “ํŒŒ์ผ์„ ์ฐพ๊ณ  ์‹คํ–‰ํ•œ๋‹ค”๋ณด๋‹ค ํ›จ์”ฌ ๋ณต์žกํ•œ ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.
์šฐ๋ฆฌ๊ฐ€ ์˜๋„ํ•œ ์‹คํ–‰ ํŒŒ์ผ์ด ์•„๋‹Œ alias๋‚˜ builtin, ํ˜น์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋งŒ๋“  function์ด ๋จผ์ € ์‹คํ–‰๋  ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ด์œ ๋กœ, ์‹ค์ œ ์–ด๋–ค ๊ฒƒ์ด ์‹คํ–‰๋˜๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๋„๊ตฌ๊ฐ€ type ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

๋‹จ์ˆœํžˆ ํŒŒ์ผ ์œ„์น˜๋งŒ ์•Œ๋ ค์ฃผ๋Š” which,
ํ‘œ์ค€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํŒŒ์ผ ๊ตฌ์กฐ๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” whereis์™€ ๋‹ฌ๋ฆฌ,

type์€ alias·builtin·function·file ์ค‘ ์–ด๋–ค ํ˜•ํƒœ๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

1. ์™œ type ๋ช…๋ น์–ด๋Š” ์™œ ์ค‘์š”ํ•œ๊ฐ€? 

๋ฆฌ๋ˆ…์Šค ์…ธ(bash, zsh)์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ ๋ช…๋ น์„ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค.

  1. alias
  2. shell builtin
  3. function
  4. PATH ๋‚ด ์‹คํ–‰ ํŒŒ์ผ(binary)

์ด ์ˆœ์„œ ๋•Œ๋ฌธ์— ์•„๋ž˜ ๊ฐ™์€ ์ผ๋“ค์ด ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค:

  • which ls๋Š” /usr/bin/ls๋ฅผ ์ถœ๋ ฅํ•˜์ง€๋งŒ ์‹ค์ œ ์‹คํ–‰์€ alias
  • grep์ด ๋‹ค๋ฅธ ์˜ต์…˜์œผ๋กœ ๋™์ž‘ํ•ด ๋””๋ฒ„๊น…์ด ๊ผฌ์ด๋Š” ๊ฒฝ์šฐ
  • PATH๋ฅผ ๋ฐ”๊ฟจ๋Š”๋ฐ๋„ ์˜ˆ์ „ ์‹คํ–‰ ํŒŒ์ผ์ด ๊ณ„์† ํ˜ธ์ถœ๋˜๋Š” ํ˜„์ƒ
  • BusyBox(OpenWrt) ํ™˜๊ฒฝ์—์„œ symlink ๊ตฌ์กฐ ๋•Œ๋ฌธ์— ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ์˜ˆ์ƒ๊ณผ ๋‹ค๋ฆ„

์ด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐํ•ด์ฃผ๋Š” ๋ถ„์„ ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ type์ž…๋‹ˆ๋‹ค.

๋ฆฌ๋ˆ…์Šค ์…ธ ๋ช…๋ น ์‹คํ–‰ ์šฐ์„ ์ˆœ์œ„
alias · builtin · function · file ์‹คํ–‰ ์ˆœ์„œ


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

type which whereis ๋ช…๋ น์–ด ๊ธฐ๋Šฅ ๋น„๊ต
type vs which vs whereis ๊ธฐ๋Šฅ ๋ฐ ๊ฒ€์ƒ‰ ๋ฒ”์œ„ Bar ๋น„๊ต

 

  • 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 ์กฐํ•ฉ ํŒ

type grep find ์กฐํ•ฉ ํŒ ๋‹ค์ด์–ด๊ทธ๋žจ
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์€ ์ง„์‹ค์„ ์•Œ๋ ค์ค€๋‹ค.”