2017-11-13 1 views
0

C++ 프로젝트에 대해 Sublime Text 3의 사용자 정의 빌드 시스템을 사용하고 있습니다. 라인 중 하나는 문제가 ${HOME} 실제 /home/user_x으로 확장하지 않는다는 것입니다

"-I${HOME}/my_file/include" 

처럼 보이지만 빈 문자열 ''로 확장됩니다. 실제 경로를 쓸 필요없이 우아하게 HOME 폴더를 지정하는 방법을 찾을 수 없습니다. 이 일을하는 방법이 있습니까? 즉, UNIX $HOME 변수를 홈 폴더의 실제 위치로 확장하려면?

답변

3

여기서 잘못된 점은 빌드 시스템에서 cmd, shell_cmdworking_dir 인수가 all subject to variable expansion 인 것입니다.

설명되어 있지 않은데이 형식의 모든 항목은 확장이 이루어질 때 변수로 처리되며 알 수없는 변수는 빈 문자열 (즉, 값 없음)로 확장됩니다.

이와 같이 Sublime은 ${HOME}을보고 확장하려고 시도하지만 문자열에서 값을 제거하는 데 도움이되지 않습니다.

이 주변에 가장 쉽고 최소 침습적 방법은 숭고한 어디 쉘이 적절를 확장 할 수 있습니다, 그것을 무시하고 통과 할 수 있도록 변수 확장에 $ 문자를 인용하는 것입니다

{ 
    "shell_cmd": "echo Home is \\${HOME}" 
} 

또는 이 예에서 볼 수 있듯이 당신이와 함께 명령 문자열 중 하나 전체 명령 문자열 shell_cmd 또는 cmd를 사용할 필요가

{ 
    "cmd": "echo Home is \\${HOME}", 
    "shell": true 
} 

주은이 작업을 위해 true으로 설정됩니다.

빌드 파일이 JSON이기 때문에 인용 부호가 두 배로 표시됩니다. 따라서 빌드가로드 될 때 \\${HOME}은 내부적으로 Sublime에 의해 \${HOME}으로 표시됩니다 (즉, 첫 번째 인용 수준을 "먹습니다"). 최종 인용은 Sublime이 $을 리터럴로 처리하여 전달되도록합니다 쉘 자체로 확장됩니다.

0

셸 스크립트에 명령을 쓰고 Sublime에서 스크립트를 실행 해 볼 수 있습니다. Sublime이이 기능을 지원하는지 확신 할 수 없지만 쉘 스크립트는 $ HOME 및 다른 변수를 찾아 확장해야합니다.

+0

실은 셸이 올바르게 확장했기 때문에 Sublime이이를 제대로 수행 할 수 있는지 궁금합니다. 지원할 겸손한 기능처럼 보입니다. – vsoftco

+0

http://docs.sublimetext.info/en/latest/reference/build_systems/exec.html에 따라'shell'을'true'로 설정할 수도 있습니다. 일할 수도 있습니다. – jurez