/var이라는 경로에 들어가러 ls 명령어를 입력해보면 /var 디렉터리 안에 log라는 디렉터리가 있음을 알 수 있다. log 디렉터리로 들어가기 위해 아래와 같이 명령어를 작성했다고 치자.
$ cd /log # No such file or directory 에러 발생
$ cd log # 정상적으로 log 디렉터리로 접근
분명 cd /log로 작성하나 cd log로 작성하나 의도한대로 작동할 것 같은데 그렇지 않다. 왜 그런지 이해하려면 상대 경로와 절대 경로에 대한 개념을 확실하게 이해하고 있어야 한다.
[의미]
절대 경로 : 루트 디렉터리를 기준으로 파일 위치를 표현
경로가 반드시 /로 시작한다. (= 경로가 /로 시작하면 무조건 절대 경로다.)
상대 경로 : 현재 디렉터리를 기준으로 파일 위치를 표현
경로가 / 이외의 문자로 시작한다.
.이 현재 디렉터리 경로를 의미
..이 상위 디렉터리 경로를 의미
절대 경로와 상대 경로의 의미를 글로만 배우면 무슨 말인지 헷갈린다. 바로 예시를 살펴보자.
✅ 상대 경로, 절대 경로 예시
cd /log
경로가 /로 시작하기 때문에 절대 경로다.
루트 디렉터리(/)에 있는 log 디렉터리로 접근
cd log
경로가 /로 시작하지 않기 때문에 상대 경로다.
현재 디렉터리에 있는 log 디렉터리로 접근
cd ./log
경로가 /로 시작하지 않기 때문에 상대 경로다.
현재 디렉터리(.)에 있는 log 디렉터리로 접근
cd log와 완전히 동일하게 작동
cd ../log
경로가 /로 시작하지 않기 때문에 상대 경로다.
상위 디렉터리(..)에 있는 log 디렉터리로 접근
위 예시를 실제 코드로 테스트 해보자.
$ cd /var # 루트 디렉터리에 있는 var 디렉터리로 접근
$ ls # var 디렉터리 내부 파일 조회
$ cd /log # 루트 디렉터리에는 log 디렉터리가 없기 때문에 에러 발생
$ cd log # 현재 디렉터리에 있는 log 디렉터리로 접근
$ cd .. # 상위 디렉터리로 다시 돌아가기
$ cd ./log # 현재 디렉터리에 있는 log 디렉터리로 접근
$ cd ../local # 현재 디렉터리의 상위 디렉토리(/var)에 있는 local 디렉터리로 접근
현업에서 아래와 같이 경로를 쓸 일은 없는데, 연습을 위해 억지로 경로를 작성해봤다. 어떤 경로로 이동하게 될 지 생각해보자.