Linux cd ๋ช ๋ น์ด๋ ๊ฒฝ๋ก ์ด๋์ ๊ธฐ๋ณธ์ด์ง๋ง, ์ ๋๊ฒฝ๋ก·์๋๊ฒฝ๋ก·cd - ์ต์ ·CDPATH๊น์ง ๊น์ด ์ดํดํ๋ฉด ์๋ํ์ ์คํฌ๋ฆฝํธ ์์ ์ฑ์ด ํฌ๊ฒ ํฅ์๋๋ค. ์ค์ ์ค์ฌ์ผ๋ก ์์ ์ ๋ฆฌํ๋ค.
1. ๊ธฐ์ด์ง๋ง ์ค์ ์์ ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ์ด์
Linux๋ฅผ ์ฐ๋ ์ฌ๋์ด๋ผ๋ฉด ํ๋ฃจ์๋ ์์ญ ๋ฒ ์
๋ ฅํ๋ ๋ช
๋ น์ด๊ฐ ์๋ค.
๋ฐ๋ก cd(change directory)๋ค.
๋๋ฌด ๊ธฐ๋ณธ์ ์ธ ๋ช
๋ น์ด๋ผ๊ณ ๊ฐ๋ณ๊ฒ ๋๊ธฐ๊ธฐ ์ฝ์ง๋ง, ์ค์ ํ์
์์๋ cd ์ฌ์ฉ ๋ฐฉ์ ํ๋๋ก ์คํฌ๋ฆฝํธ ์์ ์ฑ, ์๋ํ ์ ํ๋, ๋น๋ ํ๊ฒฝ ์ฌํ์ฑ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง๋ค.
OpenWrt ๋น๋์ฒ๋ผ ํด๋ ๊น์ด๊ฐ ๊ธธ์ด์ง๋ ์์
, CI/CD ๋จ๊ณ ์ ํ, ์ํ ๋ช
๋ น์ด ์คํ ์ ๊ฒฝ๋ก ํ์ธ ๋ฑ ๊ฒฐ๊ตญ ๋ชจ๋ ํ๋์ ์ถ๋ฐ์ ์ “๋ด๊ฐ ์ง๊ธ ์ด๋์ ์๋๊ฐ”๋ค.
๊ทธ๋์ cd๋ ๋จ์ ์ด๋ ๋ช
๋ น์ด ์๋๋ผ ์์
ํ๋ฆ์ ์ ์ดํ๋ ๋๊ตฌ์ ๊ฐ๊น๋ค.
2. cd ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ๊ณผ ํต์ฌ ๊ฐ๋
cd(change directory)๋ ํ์ฌ ์์ ๋๋ ํฐ๋ฆฌ(working directory) ๋ฅผ ๋ณ๊ฒฝํ๋ ๋ช ๋ น์ด์ด๋ค.
๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
cd ๊ฒฝ๋ก๋ช
์:
cd /home/user
cd๋ bash ๋ด์ฅ ๋ช
๋ น(builtin)์ด๋ฏ๋ก man cd๊ฐ ์กด์ฌํ์ง ์๋๋ค.
ํ์ง๋ง help cd, ๋๋ man bash์ “SHELL BUILTIN COMMANDS” ์น์
์์ ์์ธ ๋์์ ํ์ธํ ์ ์๋ค.
3. cd ๋ช ๋ น์ด์ ํต์ฌ ์ต์
cd ์์ฒด๋ ์ต์ ์ด ๊ฑฐ์ ์์ง๋ง, ๋งค์ฐ ์ค์ํ ์จ์ ๊ธฐ๋ฅ๋ค์ด ์กด์ฌํ๋ค.
| ๊ธฐ๋ฅ | ์ค๋ช |
| cd PATH | ํน์ ๋๋ ํฐ๋ฆฌ ์ด๋ |
| cd | ํ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ |
| cd ~ | ํ ๋๋ ํฐ๋ฆฌ ์ด๋ (๋์ผ) |
| cd ~user | ํน์ ์ ์ ํ์ผ๋ก ์ด๋ |
| cd - | ์ด์ ์์ ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ |
| cd .. | ์์ ๋๋ ํฐ๋ฆฌ ์ด๋ |
| cd ../.. | ๋ ๋จ๊ณ ์์ ๋๋ ํฐ๋ฆฌ ์ด๋ |
| cd . | ํ์ฌ ๋๋ ํฐ๋ฆฌ ์ ์ง |
| cd -P | ๋ฌผ๋ฆฌ ๊ฒฝ๋ก ๊ธฐ์ค ์ด๋ |
| cd -L | ๋ ผ๋ฆฌ ๊ฒฝ๋ก ๊ธฐ์ค ์ด๋ |
cd๋ bash ๋ด์ฅ ๋ช ๋ น(builtin)์ด๋ฏ๋ก man cd ๋์ help cd ๋ก ํ์ธํด์ผ ํ๋ค.
help cd
4. ํ ๋๋ ํฐ๋ฆฌ ์ด๋ ํจํด ์ดํดํ๊ธฐ
1) cd๋ง ์ ๋ ฅ
cd
→ ์๋์ผ๋ก $HOME์ผ๋ก ์ด๋
2) cd ~
cd ~
→ cd์ ๋์ผ
3) cd ~์ฌ์ฉ์
cd ~ubuntu
→ /home/ubuntu ๋ก ์ด๋
5. ์์·ํ์ ๋๋ ํ ๋ฆฌ ์ด๋ ์์ ์ ๋ฆฌ
1) ์์ ์ด๋
cd ..
2) 2๋จ๊ณ ์์ ์ด๋
cd ../..
3) ํ์ฌ ๋๋ ํฐ๋ฆฌ ์ ์ง
cd .
cd๋ ๋จ์ํ ์๋๊ฒฝ๋ก ์กฐํฉ์ ํตํ ์ด๋์ด๋ค.
6. cd - : ์ด์ ๋๋ ํฐ๋ฆฌ๋ก ๋์๊ฐ๋ ๊ธฐ๋ฅ
๊ฐ์ฅ ๋ง์ด ์ฌ๋๋ฐ๋ ๊ธฐ๋ฅ ์ค ํ๋์ด๋ค.
cd -
์ง์ ์์น๋ก ๋๋์๊ฐ๋ฉฐ ํด๋น ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅ๋ ํด์ค๋ค.
์:
/home/logs
cd /etc
cd -
# /home/logs
7. cd -P / -L : ๋ฌผ๋ฆฌ·๋ ผ๋ฆฌ ๊ฒฝ๋ก ์ด๋

pwd์ ๋ง์ฐฌ๊ฐ์ง๋ก cd๋ ๋ ๊ฐ์ง ๋ชจ๋๋ฅผ ์ง์ํ๋ค.
1) -L (๊ธฐ๋ณธ ๋์, logical path)
์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ทธ๋๋ก ๋ฐ๋ผ๊ฐ๋ค.
cd -L symlink_dir
2) -P (physical path)
์ค์ ๋์คํฌ์ ‘๋ฆฌ์ผ ๊ฒฝ๋ก’๋ฅผ ๊ธฐ์ค์ผ๋ก ์ด๋ํ๋ค.
cd -P symlink_dir
์ธ์ ์ค์ํด์ง๋?
- OpenWrt overlay ํ์ผ์์คํ
- chroot ํ๊ฒฝ
- Docker ์ปจํ ์ด๋ ๋ด๋ถ ๊ฒฝ๋ก
- ๋งํฌ๊ฐ ๊ฒน๊ฒน์ด ์กด์ฌํ๋ ํ๋ก์ ํธ
8. ์ ๋๊ฒฝ๋ก vs ์๋๊ฒฝ๋ก
์๋ ๊ฐ๋ ์ ์ด๋ณด์์๊ฒ ๋ฐ๋์ ํ์ํ ๊ธฐ์ด์ด์ง๋ง ์ค์ ์์๋ ์์ฃผ ํผ๋๋๋ ๋ถ๋ถ์ด๋ค.

์ ๋๊ฒฝ๋ก
cd /usr/local/bin
→ /๋ถํฐ ์์
์๋๊ฒฝ๋ก
cd ../../src
→ ํ์ฌ ์์น ๊ธฐ์ค ์ด๋
cd๊ฐ ์ ๋·์๋๊ฒฝ๋ก๋ฅผ ํ๋จํ๋ ๋ฐฉ์
- / ๋ก ์์ํ๋ฉด ์ ๋๊ฒฝ๋ก
- . ๋๋ .. ๋๋ ๋ฌธ์๋ก ์์ํ๋ฉด ์๋๊ฒฝ๋ก
9. CDPATH: cd๋ฅผ ๊ณ ๊ธ ๊ฐ๋ฐ์์ฒ๋ผ ์ฐ๋ ๋ฐฉ๋ฒ
๋๋ถ๋ถ์ ์ด๋ณด์๋ ๋ชจ๋ฅด๋ ๊ธฐ๋ฅ์ด์ง๋ง, ์ค์ ์์๋ ๋งค์ฐ ๊ฐ๋ ฅํ๋ค.
CDPATH๋?
cd๊ฐ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ๋ ๋ฏธ๋ฆฌ ์ง์ ํ ๊ฒ์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์๋ ํ์ํ๋ ๊ธฐ๋ฅ์ด๋ค.
์์
export CDPATH=.:/home/user/projects:/usr/local
์ด์ ๋ค์ ๋ช ๋ น์ด ๊ฐ๋ฅํ๋ค.
cd myapp
์ค์ ์์น:
/home/user/projects/myapp

โ ์ธ์ ์ ์ฉํ๊ฐ?
- ํ๋ก์ ํธ ๋ฃจํธ๊ฐ ๊น์ ๋๋ ํฐ๋ฆฌ์ผ ๋
- ๋งค๋ฒ cd ~/dev/project/src ์ ๋ ฅํ๋ ๊ฒ ๊ท์ฐฎ์ ๋
- OpenWrt feeds ๊ฐ์ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ ๋ฐ๋ณต ์์
โ ํ์ง๋ง ๊ผญ ์์์ผ ํ๋ ๊ฒฝ๊ณ
CDPATH๋ ํนํ ์คํฌ๋ฆฝํธ์์๋ ์ฌ์ฉ์ ์ง์ํด์ผ ํ๋ค.
์์ํ์ง ๋ชปํ ๊ฒฝ๋ก๋ก ์ด๋ํด ์๋ํ ๊ณผ์ ์ ์น๋ช
์ ์ธ ์ค๋ฅ๋ฅผ ๋ฐ์์ํฌ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
10. cd ๋ช ๋ น์ด ์ฌ์ฉ ์ค๋ฅ์ ํด๊ฒฐ๋ฒ

1) No such file or directory
๊ฐ์ฅ ํํ ์ค๋ฅ.
์์ธ:
- ๊ฒฝ๋ก ์คํ
- ๋์๋ฌธ์ ์ค๋ฅ(Linux๋ ๋์๋ฌธ์ ๊ตฌ๋ถ)
- ๋๋ ํฐ๋ฆฌ๊ฐ ์ญ์ ๋จ
- ์๋๊ฒฝ๋ก ๊ธฐ์ค์ด ์์๊ณผ ๋ค๋ฆ
ํด๊ฒฐ:
ls
ls -al
pwd
์ผ๋ก ์ค์ ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ํ์ธํ๋ค.
2) Permission denied
์์ธ:
- root๊ฐ ์๋ ๊ถํ์ผ๋ก ์ ๊ทผ ๋ถ๊ฐํ ๋๋ ํฐ๋ฆฌ
- ํ์ผ์ธ๋ฐ cd ์๋ (cd๋ ํด๋๋ง ๊ฐ๋ฅ)
ํด๊ฒฐ:
ls -ld ๊ฒฝ๋ก๋ช
๊ถํ ํ์ธ ํ ํด๊ฒฐ.
3) symbolic link ๊ฒฝ๋ก ๊ผฌ์ ๋ฌธ์
์:
cd /opt/logs
pwd
cd ..
๊ทธ๋ฐ๋ฐ ์์ ๊ฒฝ๋ก๊ฐ ๋ค๋ฅด๊ฒ ๋์ด
์ฌ๋ณผ๋ฆญ ๋งํฌ ๊ตฌ์กฐ๊ฐ ๋ณต์กํ ํ๋ก์ ํธ์์ ์์ฃผ ๋ฐ์ํ๋ค.
์ด๋๋:
cd -P
pwd -P
readlink -f .
์ผ๋ก ๋ฌผ๋ฆฌ ๊ฒฝ๋ก ๊ธฐ์ค์ผ๋ก ๋ถ์ํ๋ค.
11. cd ๋ช ๋ น์ด ์ค์ ์๋๋ฆฌ์ค 10๊ฐ์ง
์ด๋ณด์๋ฟ ์๋๋ผ ์ ๋ฌธ๊ฐ๋ ๊ณต๊ฐํ ๋งํ ์ํฉ์ผ๋ก ์ ๋ฆฌํ๋ค.
1) rm -rf ์คํ ์ ๊ฒฝ๋ก ํ์ธ
pwd
cd /var/log
rm -rf *
2) OpenWrt ๋น๋ ๋๋ ํฐ๋ฆฌ ์ถ์
cd openwrt
make menuconfig
cd build_dir/target-*/...
3) ์คํฌ๋ฆฝํธ์์ ํ์ฌ ๊ฒฝ๋ก ๊ฒ์ฆ
if [ "$(pwd)" != "/usr/local/myapp" ]; then
echo "Wrong path"
exit 1
fi
4) Makefile์์ ์๋ ๊ฒฝ๋ก ํ์ธ
CURDIR := $(shell pwd)
all:
@echo $(CURDIR)
5) ๊ฒฝ๋ก ์ด๋ ํ ์๋ ์คํ
cd /var/log && tail -f messages
6) ํน์ ์ฌ์ฉ์ ํ ๋๋ ํฐ๋ฆฌ ์ด๋
cd ~www-data
7) docker/chroot ํ๊ฒฝ์์ ๊ฒฝ๋ก ํผ๋ ๋ฐฉ์ง
cd -P /
8) ๊ธธ์ด ๋๋ฌด ๊ธด ๊ฒฝ๋ก ๋น ๋ฅด๊ฒ ์ด๋
export CDPATH=.:~/project:~/workspace
cd build
9) ํ๋ก์ ํธ ๋๋ ํฐ๋ฆฌ ์ ํ ์๋ ์คํฌ๋ฆฝํธ
cd ~/project/src/module
10) git ์์ ๋๋ ํฐ๋ฆฌ ๋น ๋ฅด๊ฒ ์ด๋
cd $(git rev-parse --show-toplevel)
12. cd ๋ช ๋ น์ด์ ํจ๊ป ์์ฃผ ์ฐ๋ ๋ช ๋ น์ด
๊ฒฝ๋ก ํ์ธ
pwd
ํ์ฌ ๋๋ ํฐ๋ฆฌ ๋ด์ฉ ํ์ธ
ls
ํด๋ ๊ตฌ์กฐ ๋ณด๊ธฐ
tree
์ฌ๋ณผ๋ฆญ ๋งํฌ ์ค๊ฒฝ๋ก ๋ณด๊ธฐ
readlink
๋๋ ํฐ๋ฆฌ ๋ด๋ถ ํ์ผ ํ์
find
13. cd ๋ช ๋ น์ด ์์ฃผ ๋ฌป๋ ์ง๋ฌธ(FAQ)
Q1. cd - ์ cd .. ์ ์ฐจ์ด?
- cd - : ์ด์ ๋๋ ํฐ๋ฆฌ
- cd .. : ์์ ๋๋ ํฐ๋ฆฌ
Q2. cd์ ์ต์ ์ด ์ ๊ฑฐ์ ์๋์?
cd๋ ์ ธ ๋ช ๋ น์ด์ ๋งค์ฐ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด๊ธฐ ๋๋ฌธ์ ๋์์ด ๋จ์ํ์ง๋ง, -P/-L ๊ฐ์ ์ค์ํ ์ต์ ์ ์กด์ฌํ๋ค.
Q3. cd ~ ์ cd๋ ๊ฐ์๊ฐ์?
๋ค. ๋ ๋ค $HOME ์ด๋์ด๋ค.
Q4. cd๊ฐ ๋์ํ์ง ์์ ๋ ํด๊ฒฐ๋ฒ์?
ls -al
pwd
readlink -f .
๋ก ๊ตฌ์กฐ ํ์ ํ ํด๊ฒฐ ๊ฐ๋ฅํ๋ค.
Q5. cd ๋ช ๋ น์ด๋ฅผ C ์ธ์ด๋ก ๋์์ํค๋ ค๋ฉด?
chdir() ์์คํ ์ฝ์ ์ฌ์ฉํ๋ค.
14. cd๋ ๋จ์ ์ด๋ ๋ช ๋ น์ด ์๋๋ค
ํ๋ก์ ํธ ๊ตฌ์กฐ๊ฐ ๋ณต์กํด์ง์๋ก cd ๋ช
๋ น์ด์ ์ ํํ ์ฌ์ฉ๋ฒ์ ์์
ํจ์จ๊ณผ ์ค์๋ฅผ ํฌ๊ฒ ์ข์ฐํ๋ค.
ํนํ ์๋ํ ์คํฌ๋ฆฝํธ๋ Makefile์ ๋ค๋ฃจ๋ ํ๊ฒฝ์์๋ ๊ฒฝ๋ก ํ๋จ์ด ๊ณง ์คํ ์์ ์ฑ์ด๋ค
.
“๊ฒฝ๋ก๋ฅผ ์๋ฉด ์์คํ ์ ์ดํดํ๊ณ , ๊ฒฝ๋ก๋ฅผ ์ด๋ํ๋ฉด ์์ ์ ์งํํ ์ ์๋ค.”