[OS] 절대경로(Absolute Path)와 상대경로(Relative Path)
절대경로
최상위(루트) 디렉토리부터 해당 파일까지의 모든 경로이다.
- 고유한 주소
- Ex) C:\users\document\absolute_file_path.txt, https://www.google.com
상대경로
현재 파일이 존재하는 디렉토리를 기준으로 해당 파일까지의 위치를 작성한 경로이다.
- 현재 소스코드 파일이 위치한 폴더를 기준으로 해당 파일의 위치
- 현재 파일을 기준으로 경로를 연결하기에 루트 디렉토리는 사용하지 않는다.
- Ex) .\document\relative_file_path.txt
디렉토리 접근 방법
-
최상위 디렉토리(루트 디렉토리)
/
: 루트 디렉토리 -
현재 디렉토리
./
: 현재 위치의 디렉토리 -
상위 디렉토리
../
: 현재 위치의 상위 디렉토리 -
두단계 상위 디렉토리
../../
무엇을 사용해야 할까?
내부의 파일을 불러올 때는 상대경로를 사용하고, 외부 파일을 불러 올때는 절대경로를 사용한다.
절대경로는 어디서든지 해당 파일을 찾을 수 있다는 장점이 있다. 이에 비해 상대경로는 파일의 위치를 잊어버렸을 시 고유 경로를 알지 못하므로 소스 분실 가능성이 높다.
하지만 절대경로는 서버 내부에서 처리되는 것이 아니고, 최상위 폴더부터 경로를 찾기 때문에 컴파일 속도가 상대적으로 느리다. 상대경로는 폴더 기준으로 탐색하면 되므로 컴파일 속도가 빠르다는 장점이 있다.
상대 경로를 사용하는 이유
프로그램 작성 시 고려해야 할 것
- 파일의 경로가 자주 바뀌는 경우
- 최초 디렉토리가 다른 경우
- 서로 다른 Windows와 Mac OS 등에서 모두에서 작동해야 하는 경우
위와 같은 프로그램을 만드는 경우엔 그때 그때 경로를 다시 작성하거나, OS 별로 따로 관리해야 하기에 비효율적이다. 이런 경우에는 절대 경로가 아닌 상대 경로를 이용한다.
기록
스크립트 작성 후 로컬 환경의 VS Code에서 실행할 때는 문제가 없었지만,
다른 PC서버의 작업 스케줄러에 등록하는 작업에서 스크립트가 제대로 실행되지 않는 문제가 있는 것을 파악했다.
원인은 절대경로와 상대경로가 섞여 중간에 참조하는 폴더의 파일을 찾을 수 없는 것이 문제임을 알게되어
유저가 자신이 원하는 폴더에서 스크립트를 실행해도 문제가 없도록, CMD 등과 리눅스(Ubuntu) 환경에서도 문제없이 실행할 수 있게
파일이 실행되는 절대경로를 파악하여 현재 경로를 변경하고, 이후의 작업은 상대경로로 처리하는 방식으로 변경했다.
댓글남기기