경로 설정에 물결표(~)를 넣지 마세요
1. 이게 뭔가요?
컴퓨터에서 명령어의 경로를 찾아주는 경로 설정 기능인 패스(PATH)에 물결표(~)를 사용할 때 생기는 오해와 실수를 다룹니다. 패스는 컴퓨터가 우리가 입력한 명령어를 어떤 폴더에서 찾아야 하는지 알려주는 목록입니다. 리눅스나 맥 같은 운영체제에서는 물결표가 현재 로그인한 사용자의 개인 폴더를 뜻하는 약자로 자주 쓰입니다. 하지만 명령어 설정 파일에 이 물결표를 큰따옴표로 감싸서 적으면 컴퓨터가 이를 약자로 인식하지 못하고, 기호 그대로 해석해 현재 작업 중인 폴더 안에 물결표라는 이름의 폴더를 만들어버립니다. 이 글은 모래박스 형태의 격리 도구인 노노(nono)가 이 설정을 두고 경고를 보낸 것을 계기로, 그 원리와 이를 확인하고 고치는 방법을 설명합니다.
2. 왜 화제인가요?
개발자가 터미널 환경 설정 파일에 경로를 추가할 때 흔히 쓰는 물결표 방식이 따옴표 규칙 때문에 의도와 다른 결과를 낳기 때문입니다. 많은 사람이 물결표를 쓰면 알아서 개인 폴더로 바뀔 것이라고 생각하지만, 큰따옴표 안에서는 물결표가 확장되지 않아 실제로는 엉뚱한 현재 폴더 아래에 물결표 모양의 폴더가 생깁니다. 글쓴이는 도구의 경고 메시지와 직접 실험한 명령어 결과를 바탕으로, 왜 따옴표 안에서 물결표를 쓰면 안 되는지 그리고 그 대안으로 어떤 방식을 써야 안전한지 명확하게 짚어줍니다.
3. 핵심 내용
프로그램이 컴퓨터의 다른 부분에 해를 끼치지 못하도록 안전하게 가두어 실행하는 '노노(nono)'라는 가상 격리 도구를 가지고 놀다가 격리된 환경이 쓸 수 있는 경로 목록에 물결표가 포함되어 있다는 경고 문구를 보았습니다. 컴퓨터 사용자의 환경 설정 파일에 경로를 추가할 때 물결표 기호를 포함하여 적으면 문제가 생깁니다. 이 설정은 물결표 기호를 컴퓨터의 개인 사용자 폴더 전체 경로로 바꾸어주지 않습니다. 물결표를 실제 폴더 경로로 바꾸어주는 기능은 인용부호로 감싸지 않은 생 글자 입력에서만 작동하기 때문입니다. 공식 설명서에 따르면 명령어 해석기는 따옴표로 감싸지지 않은 물결표를 접두사로 보고, 특정 위치 바로 뒤에 따옴표가 없는 경우에만 물결표를 실제 개인 사용자 폴더 경로로 바꾸어줍니다. 따라서 개인 사용자 폴더 전체 경로가 경로 설정에 더해지는 대신, 현재 폴더 뒤에 물결표가 그대로 붙은 형태의 경로가 경로 설정에 더해지게 됩니다. 이 문제를 해결하려면 물결표 대신 개인 사용자 폴더의 실제 전체 경로를 뜻하는 약속된 변수를 사용해 고치면 됩니다. 따옴표를 쓰지 않고 작성하는 방식은 실제로 작동하기는 하지만 중간에 띄어쓰기 같은 공백이 들어가면 설정이 망가지므로 매우 불안정합니다. 실제 명령어 입력 결과를 보면 지정된 폴더 안에 물결표라는 이름의 실제 폴더가 만들어지고 프로그램이 그 안에서 실행되는 것을 확인할 수 있습니다. 본인의 컴퓨터에 이와 같은 문제가 있는지 확인하는 명령어를 사용하여 잘못된 경로 설정 항목이 출력되는지 확인하고, 화면에 무언가 출력된다면 환경 설정 파일을 열어 물결표 기호를 실제 개인 사용자 폴더 경로 변수로 수정하면 됩니다.
4. 나에게 어떤 영향이 있나요?
개발 환경 설정 파일에 큰따옴표로 감싼 물결표를 넣은 채로 경로를 지정해 두었다면, 프로그램이 개인 폴더가 아니라 현재 작업 중인 폴더 아래의 엉뚱한 위치를 가리키게 됩니다. 독자는 간단한 명령어로 자신의 설정 상태에 물결표가 포함되어 있는지 직접 확인하고, 문제가 발견되면 설정 파일에서 물결표를 명확한 개인 폴더 환경변수로 바꾸어야 합니다. 명령어 경로 설정의 작은 실수가 어떻게 예상치 못한 동작으로 이어지는지 이해하고 점검하는 데 유용한 참고 자료가 됩니다.