쉘 할당에서 대시로 시작하는 표현식은 무엇을 의미합니까?

쉘 할당에서 대시로 시작하는 표현식은 무엇을 의미합니까?

스크립트 파일에서 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 표준에는 짧은 버전의 명령줄 인수만 필요하다는 점에 유의해야 합니다.

관련 정보