스크립트 파일에서 JAVA_OPTS=-Xms1024m -Xmx1024m ...을 사용해 보았습니다. "-Xmx1024m: 명령을 찾을 수 없습니다"와 같은 오류가 표시됩니다.
큰따옴표나 작은따옴표로 과제를 인용하면 오류가 사라집니다.
첫 번째 대시로 인해 오류가 발생한 것으로 나타났습니다. "a=-bb xx yy ..."와 같은 모든 할당은 동일한 오류를 발생시키기 때문에 xx를 프로그램으로 실행하려고 합니다. 첫 번째 단어가 대시로 시작하고 할당 표현식에 따옴표가 없으면 쉘은 두 번째 단어를 명령으로 인식하는 것으로 나타납니다.
그래서 내 질문은: 쉘에서 대시로 시작하는 할당 표현식이 무엇을 의미합니까? 저는 기본적으로 bash를 사용합니다.
답변1
먼저 변수를 인용해야 합니다.
JAVA_OPTS="-Xms1024m -Xmx1024m"
변수는 인용되지 않았으므로 원래 명령의 JAVA_OPTS=-Xms1024m
변수 할당 및 명령 이름으로만 해석됩니다 . -Xmx1024m
이를 명령에 대한 환경 변수 설정이라고도 합니다. 예를 들어,
LC_ALL=C date +%s
date
설정이 수정하는 환경이 사용됩니다 LC_ALL=C
(즉 date
, 다른 것을 설정하더라도 영어 로캘에서 실행). 여기서 차이점에 유의하세요. LC_ALL=C에는 공백이 없으므로 단어 분리가 발생하지 않습니다. 이는 다음과 같은 경우에 발생합니다.JAVA_OPTS=-Xms1024m -Xmx1024m
둘째, 대시는 옵션의 짧은 스타일을 나타냅니다. bash --posix
또는 와 같은 긴 스타일도 있습니다 ls --format=long
. 왜 대시인가? 역사적 실천. POSIX 표준에는 짧은 버전의 명령줄 인수만 필요하다는 점에 유의해야 합니다.