리눅스 which whereis locate: 3가지 위치(경로) 확인 명령어

httpd.conf 를 고치려는데 파일이 어디 있는지 모르거나, 같은 이름의 명령이 두 곳에 있어 어느 쪽이 실행되는지 헷갈릴 때가 있습니다. 리눅스 which 명령어는 실제로 실행되는 파일을, 리눅스 whereis 명령어는 실행 파일과 설정 폴더 · 매뉴얼을, locate 명령어는 이름이 들어간 모든 경로를 찾습니다. 세 명령의 차이를 표로 비교하고, 브라우저 안의 가상 서버에서 직접 쳐 볼 수 있게 했습니다.
AlmaLinux 9.8 에서 which 는 which 2.21, whereis 는 util-linux 2.37.4 패키지에 들어 있어 처음부터 쓸 수 있으며, locate 는 mlocate 0.26 패키지를 따로 설치해야 합니다.
✅ which · whereis · locate 차이
세 명령은 찾는 곳이 다릅니다. which 와 whereis 는 정해진 폴더를 그 자리에서 뒤지고, locate 는 미리 만들어 둔 파일 목록(DB)에서 이름을 찾습니다.
| 명령 | 찾는 것 | 찾는 곳 | 새로 만든 파일 |
|---|---|---|---|
| which | 실행되는 명령 파일 하나, 별칭(alias) | PATH 에 등록된 폴더 | 바로 찾음 |
| whereis | 실행 파일 · 설정 폴더 · 매뉴얼 | /usr/bin · /etc · /usr/share/man 같은 정해진 폴더 | 바로 찾음 |
| locate | 이름이 들어간 모든 파일과 폴더 | 미리 만든 DB(/var/lib/mlocate/mlocate.db) | updatedb 뒤에 찾음 |
같은 httpd 를 which 와 whereis 로 찾으면 차이가 바로 보입니다.
~]# which httpd
/usr/sbin/httpd
~]# whereis httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd /usr/share/man/man8/httpd.8.gzlocate 는 이름 일부만 맞아도 경로를 모두 보여 주므로, [locate httpd.conf]를 치면 설정 파일 말고도 매뉴얼(httpd.conf.5.gz)과 백업해 둔 사본까지 나옵니다.
아래 가상 서버에서 왼쪽의 which · whereis · locate 를 고르면 칩이 바뀌고, 칩을 누르면 그 명령이 입력됩니다. 키보드로 직접 쳐도 됩니다.
파일을 이름이 아니라 크기나 수정 날짜로 찾을 때는 find 명령어를 쓰며, 지금 있는 폴더의 경로는 pwd 명령어로 확인합니다.
✅ 리눅스 which 명령어
which 는 PATH 에 등록된 폴더를 앞에서부터 차례로 뒤져, 처음 찾은 실행 파일 하나를 보여 줍니다. 명령을 쳤을 때 실제로 실행되는 파일이 이것입니다.
AlmaLinux 의 bash 는 which 에 별칭 목록을 넘겨 주므로, 별칭이 걸린 명령은 별칭과 실제 파일이 함께 나옵니다. PATH 어디에도 없으면 [no 명령 in (PATH)]가 나옵니다.
~]# which ll
alias ll='ls -l --color=auto'
/usr/bin/ls
~]# which htop
/usr/bin/which: no htop in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)옵션은 사실상 -a 하나입니다. 같은 이름이 PATH 의 두 폴더에 있을 때 모두 보여 주며, 맨 위에 나온 것이 실제로 실행됩니다.
~]# which ping
/usr/sbin/ping
~]# which -a ping
/usr/sbin/ping
/usr/bin/pingAlmaLinux 9.8 의 /usr/sbin/ping 은 /usr/bin/ping 을 가리키는 링크라 결과는 같습니다. 직접 설치한 프로그램이 /usr/local/bin 에 있으면 PATH 순서상 /usr/bin 의 것보다 먼저 실행됩니다.
[which cd]는 /usr/bin/cd 를 보여 주지만, 셸에서 cd 를 치면 이 파일이 아니라 셸 내장 명령이 실행됩니다. 내장 명령인지는 [type cd]로 확인하며, [cd is a shell builtin]이 나옵니다.
✅ 리눅스 whereis 명령어
whereis 는 명령 이름으로 실행 파일과 매뉴얼을 함께 찾습니다. PATH 와 상관없이 /usr/bin · /usr/sbin · /usr/lib64 · /etc · /usr/share 같은 정해진 폴더를 뒤지므로, 이름이 같은 설정 폴더(/etc/httpd)까지 나옵니다.
| 옵션 | 설명 | |
|---|---|---|
| -b | 실행 파일 쪽만. httpd 는 /usr/sbin/httpd 와 /usr/lib64/httpd · /etc/httpd · /usr/share/httpd | |
| -m | 매뉴얼만(/usr/share/man · /usr/share/info) | |
| -s | 소스만. AlmaLinux 9.8 기본 설치에서는 [httpd:]처럼 이름만 나옴 | |
| -l | whereis 가 뒤지는 폴더 목록 |
~]# whereis -b httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd
~]# whereis -m httpd
httpd: /usr/share/man/man8/httpd.8.gz
~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1ossl.gz /usr/share/man/man1/passwd.1.gz찾는 것이 없으면 [htop:]처럼 이름만 나옵니다. which 는 못 찾으면 종료 코드 1을 돌려주고 whereis 는 0을 돌려주므로, 스크립트에서 설치 여부를 확인할 때는 which 를 씁니다.
✅ 리눅스 locate 명령어
locate 는 디스크를 뒤지지 않고 미리 만든 DB 에서 이름을 찾습니다. 그래서 빠르지만, DB 를 만든 뒤에 생긴 파일은 찾지 못합니다.
~]# dnf -y install mlocate
~]# updatedb설치 직후 바로 치면 아직 DB 가 없어 [locate: can not stat () `/var/lib/mlocate/mlocate.db’: No such file or directory]가 나오며, updatedb 를 한 번 실행하면 만들어집니다. 그 뒤로는 mlocate-updatedb.timer 가 하루 한 번 DB 를 새로 만듭니다.
새로 만든 파일은 updatedb 전에는 나오지 않고, 지운 파일은 updatedb 전까지 계속 나옵니다. 지금 있는 파일만 보려면 -e 를 붙입니다.
~]# touch report.txt
~]# locate report.txt
~]# updatedb
~]# locate report.txt
/root/work/report.txt
~]# rm -f report.txt
~]# locate report.txt
/root/work/report.txt
~]# locate -e report.txt/etc/updatedb.conf 의 PRUNEPATHS 에 /tmp · /var/tmp · /mnt · /media 가 들어 있어, 이 폴더의 파일은 updatedb 를 돌려도 나오지 않습니다.
🔲 locate 명령어 옵션
| 옵션 | 설명 | |
|---|---|---|
| -i | 대소문자를 구분하지 않고 찾음 | |
| -c | 경로 대신 찾은 개수만 | |
| -l= -n | 뒤에 숫자를 붙여 그 개수까지만. -l 3 | |
| -b | 경로 끝의 파일 이름에서만 찾음 | |
| -e | DB 에 있어도 지금 없는 파일은 뺌 | |
| -S | DB 정보(폴더 수 · 파일 수 · 크기) | |
| -r | 정규식으로 찾음. locate -r “httpd.conf$” |
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.