이전 글에서 절대 경로와 상대 경로를 주구장창 설명한 이유는 pwd 명령어를 설명하기 위해서입니다. 이 명령어는 현재 내가 작업하고 있는 위치를 절대 경로로 출력하는 함수입니다.

 

 

 그러면 루트를 기준으로 현재 내가 있는 위치를 화면에다가 프린트 할 거에요. 만약에 루트라면, /만 출력을 할 거에요. 루트에는 여러가지 폴더들이 있는데요. 그 중, 저는 home 디렉토리에 들어가 보겠습니다. 

 

 

 그러면 이 안에 chogahui05라는 폴더가 또 있는데요.

 

 

 이 안으로 들어가면 터미널이 켜졌을 때, 작업 디렉토리가 나타납니다. 저는 /home/chogahui05라는 디렉토리에서 작업을 할 겁니다. 그리고 몇 개의 디렉토리와, 폴더들을 만들 겁니다. 이것을 디렉토리 구조로 나타내면 다음과 같습니다.

 

 

 chogahui05 밑에 aa가 있고 aa 밑에 bb가 있고, bb 밑에 cc가 있는 구조입니다. 그리고 현재 제가 있는 디렉토리로부터, aa 밑에 bb 밑에 있는 cc로 바로 가기 위한 링크를 하나 만들었는데요. 이것을 new_cc라고 하겠습니다. 이것도 하나 만들었습니다.

 

 

 실제로 new_cc가 aa/bb/cc를 가리키고 있음을 알 수 있어요. 쉽게 말해서 윈도우에서도 폴더 바로가기 만들 수 있어요.

 

 

 그것이랑 똑같다고 보시면 됩니다.

 

 


 저는 cd new_cc 명령어를 쳤습니다. 그러면, 현재 aa 밑에 bb 밑에 있는 cc 디렉토리로 올 겁니다.

 

 

 즉, 저는 보라색 위치로부터 new_cc 라는 링크를 타고 온 거에요. 그런데, 리눅스 pwd 명령어는, 절대 path를 출력한다고 했는데요. -L을 준 경우와, -P를 준 경우 두 경우가 달라요. 먼저 -L을 봅시다. 일단 저는 chogahui05에 있는 심볼릭 링크인 new_cc를 타고 들어왔습니다. 이 때 어떻게 출력하나 봅시다.

 

 

 심볼릭 링크를 타고 들어왔다고 출력해 줍니다. 그러한가요? 그런데 -P 옵션을 주면 이야기가 달라져요. -P를 주면 all sym link를 avoid 하는데요. 어떻게 출력이 되나 봅시다.

 

 

 분명한 것은 new_cc를 타고 들어 왔는데도, 물리적인 path를 출력해 줘요. 바로가기를 모두 무시한 경로를요. 그러니까, 윈도우에서 폴더 바로가기를 만들고 바로가기를 클릭해서 들어간다고 해 봅시다. -P는, 경로에서 심볼릭 링크를 타고 들어왔다고 하더라도, 실제 물리적인 경로를 출력합니다. 즉, 점선으로 표시된 링크는 무시한다는 것입니다.

 

 여담으로 제가 옵션 없이 해당 명령어를 쳤을 때 -L 옵션을 친 것과 같은 결과가 나오는데요. 제 환경에서는 default 옵션으로 -L을 주는 듯 싶어요.

 

 

 그러니, 검은색으로 칠한 경로가 출력이 될 거에요.

 

 


 또 다른 예제를 봅시다. 디렉토리 구조를 다음과 같이 바꾸어 보았습니다.

 

 

 그리고 저는 chogahui05 밑에 있는 aa 디렉토리에 들어간 다음에 new_cc 링크를 타고 이동을 했습니다. 그러면 저는 chogahui05 밑에 있는 aa로 들어간 다음에 new_cc 라는 걸 타고 들어갔어요. 그러면 -L 옵션을 준다면, 그러한 내용이 반영되어서 프린트가 될 거에요.

 

 

 -L이 default로 주어진 환경인 경우, pwd를 입력하면, aa를 타고 new_cc를 탔다는 정보가 나올 거에요. 경로가 출력될 때요. 그런데 -P 옵션을 주면 어떤가요?

 

 

 점선으로 연결된 링크를 무시한 경로를 출력합니다. 다 무시하면 트리 구조가 만들어 질 거에요.

 

 

 제가 있는 위치를 연두색으로 표현해 보았습니다. 점선을 무시했을 때, 실제 path는 루트로부터 어떻게 와야하나요? home으로 들어와서 cho.. 디렉토리 안에 bb 안에 cc로 들어와야 해요. 따라서, /home/chogahui05/bb/cc가 출력이 됩니다.