여기서 잘못된 점은 빌드 시스템에서 cmd
, shell_cmd
및 working_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이 $
을 리터럴로 처리하여 전달되도록합니다 쉘 자체로 확장됩니다.
실은 셸이 올바르게 확장했기 때문에 Sublime이이를 제대로 수행 할 수 있는지 궁금합니다. 지원할 겸손한 기능처럼 보입니다. – vsoftco
http://docs.sublimetext.info/en/latest/reference/build_systems/exec.html에 따라'shell'을'true'로 설정할 수도 있습니다. 일할 수도 있습니다. – jurez