2021-02-10 08:30:47

경로(path)는 코딩을 하는 사람들에게는 꽤 중요한 개념입니다. 오늘은 matlab을 예로 들어 경로라는 개념을 다루지만 다른 코딩 언어에도 동일하게 적용되는 개념이니, 경로에 대해서 이해하고 싶은 분들은 한 번 읽어보시기 바랍니다.

 

경로(path)란?

우선 제 작업실에 A방, B방, C방, D방이 있다고 가정해보겠습니다.

 

현재 저는 A방에서 책상을 만드는 작업을 하고 있습니다. 작업을 하려고 보니 망치가 필요하다는 것을 깨달았습니다. 그런데 망치는 A방에 없고 B방에 있는 상황입니다. 그렇다면 B방을 경로에 추가해줘야 작업이 가능합니다.  

 

또 작업을 하다보니 톱이 필요해졌습니다. 톱은 C방에 있습니다. 그렇다면 C방도 경로에 추가해줘야 합니다.  

 

계속 이어서 작업을 하는데, 이번에는 니스가 필요해졌습니다. 니스는 D방에 있습니다. 따라서 D방도 경로에 추가해줘야 합니다. 

 

이처럼 작업에 필요한 도구가 있는 주소를 바로 경로라고 부릅니다. 필요한 도구들이 현재 작업 위치에 없다면 그들의 경로를 추가해줘야 합니다. 

 

path, addpath, genpath, rmpath 함수

이제 실제 예를 들어 다시 한번 설명하겠습니다. 저는 지금 D 드라이브의 study라는 폴더(D:\Study)에서 작업을 하려고 합니다. 그런데 바탕화면에 있는 test라는 폴더(C:\Users\Sim\Desktop\test)에 있는 add_kh라는 함수를 사용하고 싶습니다. 일단 경로 추가 없이 사용가능한지 한번 해보겠습니다.

 

 

보시다시피 에러가 뜹니다. 에러 내용을 보아하니, add_kh가 현재 폴더 또는 MATLAB 경로에서 찾을 수 없고, C:\Users\Sim\Desktop\test라는 곳에 있다고 알려줍니다. add_kh라는 도구를 사용하려면 C:\Users\Sim\Desktop\test를 경로에 추가해야한다는 것입니다. 

 

matlab에서 경로 추가 함수는 addpath()입니다. 다음과 같이 사용하시면 됩니다.

 

>> addpath('C:\Users\Sim\Desktop\test')

 

이제 다시 add_kh(2, 5)를 입력해보겠습니다. 

 

 

아까는 안 되던 것이 이제는 됩니다. 왜냐하면 add_kh라는 도구가 있는 경로를 추가해줬기 때문에 그렇습니다.

 

이번에는 C:\Users\Sim\Desktop\test 내 test1 폴더, 즉 C:\Users\Sim\Desktop\test\test1에 있는 subtraction_kh라는 도구를 사용하고 싶습니다. 상위 폴더인 test를 경로에 추가했으니 될 법도 합니다. 한번 사용가능한지 해보겠습니다. 

 

 

보시다시피 안 됩니다. 왜냐하면 하위 폴더들은 경로에 추가되지 않았기 때문입니다. 하위 폴더들까지 모두 경로에 추가하고 싶을 때는 genpath함수도 함께 사용해줘야 합니다.

 

>> addpath(genpath('C:\Users\Sim\Desktop\test'))

 

이제 다시 subtraction_kh(10, 3)을 명령해주면 작동합니다. 

 

 

addpath(genpath())를 사용했을 때 어떤 일이 일어난 것인가 하면, test 폴더 내의 모든 하위 폴더들이 경로에 추가된 것입니다. 상단 메뉴바에서 경로 설정을 클릭해보시면 다음과 같이 추가된 것을 확인하실 수 있습니다. 

 

 

그냥 명령창에 path를 입력해줘도 확인 가능합니다. 

 

>> path

 

 

마지막으로, 추가된 경로를 제거해보도록 하겠습니다. 더이상 그 경로의 도구들이 필요없다면, 경로를 제거해도 되겠죠? 제거할 때는 rmpath() 함수를 사용합니다. test 폴더 내 하위 폴더들에 대한 모든 경로를 제거하려면 마찬가지로 genpath() 함수를 곁들여줘야 합니다. 그냥 rmpath('C:\Users\Sim\Desktop\test')를 명령하면, 다음과 같이 딱 그 경로만 제거되고, 하위 폴더들에 대한 경로는 제거되지 않습니다. 

 

 

따라서 모든 하위 경로까지 제거하려면 다음과 같이 명령해줘야 합니다. 

 

>> rmpath(genpath('C:\Users\Sim\Desktop\test'))

 

 

이제 보시다시피 모두 제거되었습니다. 

 

이 글이 여러분들이 경로(path)의 의미를 이해하는데 도움이 되었길 바랍니다. 혹시라도 제가 설명한 것이 틀렸거나 적절치 않은 부분이 있다면, 꼭 알려주시기 바랍니다. 글은 자신감 있게 썼지만, 저도 배워가는 입장이니까요.^^ 끝까지 읽어주셔서 감사합니다.