/etc/environment에 정의된 환경 변수에서 이 추가 견적을 받는 이유는 무엇입니까?

/etc/environment에 정의된 환경 변수에서 이 추가 견적을 받는 이유는 무엇입니까?

CentOS 서버에서 env 변수가 NODE_OPTIONS잘못된 값으로 설정되었습니다. /etc/environment, /etc/profile과 같은 가능한 파일을 확인했지만 운이 없었습니다. 또한 /etc/에서 greping을 시도했지만 여전히 성공하지 못했습니다. 이것은 나를 화나게 한다.

나는 이것을 시도했습니다 : https://unix.stackexchange.com/a/154971/92712

출력에 그러한 변수가 없다는 사실에 놀랐습니다. 하지만 그것은

printenv NODE_OPTIONS 
set | grep NODE_OPTIONS
echo $NODE_OPTIONS

(쉘은 bash입니다)

이 NODE_OPTIONS가 어떤 파일에서 나오는지 알 수 있는 방법이 있나요?


추가 정보:

$ node -v
node: invalid value for NODE_OPTIONS (unterminated string)

$ echo $NODE_OPTIONS
--max-old-space-size=5120"

$ cat /etc/environment  
export NODE_OPTIONS="--max-old-space-size=5120"

고쳐 쓰다:

@ilkkachu 감사합니다

$ declare -p NODE_OPTIONS
declare -x NODE_OPTIONS="--max-old-space-size=5120\" "

업데이트 2: 추가 큰따옴표 env도 출력에 나타납니다.

$ env
NODE_OPTIONS=--max-old-space-size=5120"

업데이트 3: 감사합니다 @Johan Myréen

$ od -c /etc/environment
0000000  \n   e   x   p   o   r   t       N   O   D   E   _   O   P   T
0000020   I   O   N   S   =   "   -   -   m   a   x   -   o   l   d   -
0000040   s   p   a   c   e   -   s   i   z   e   =   5   1   2   0   "
0000060       #   i   n   c   r   e   a   s   e       t   o       5   g
0000100   b  \n  \n
0000103

답변1

$ cat /etc/environment  
export NODE_OPTIONS="--max-old-space-size=5120"

그래서 /etc/environment조금 이상합니다. pam_env.so, 로 구성되어 있습니다 .매뉴얼 페이지이는 다음을 포함해야 함을 의미하므로"별도의 라인에 있는 간단한 KEY=VAL 쌍"그리고 일부 버전의 매뉴얼 페이지에도 이 내용이 언급되어 있습니다."bash 호환성을 위해 내보내기 지시문을 지정할 수 있지만 무시됩니다."

어쨌든 쉘에서는 이를 읽지 않으며 모든 쉘 구문이 지원되는 것은 아닙니다. 매뉴얼 페이지에는 따옴표에 대한 언급이 없으며 백슬래시 이스케이프 또는 다른 변수 확장을 지원하지 않습니다. PATH=$PATH:/some/path즉, 또는 FOOPATH=$HOME/foo작동하지 않습니다.

#그러나 이것이 전부는 아닙니다 . 최소한 내 데비안에서는 줄 중간에서도 기호를 주석 표시로 처리하는 것 같습니다 .값의 시작과 끝(있는 경우)에서 따옴표를 제거하지만 일치하는지 여부는 상관하지 않습니다..

예를 들어 왼쪽에 두 행이 있으면 오른쪽에 두 개의 값이 표시됩니다.

/etc/environment 결과 변수
TEST1="hash#sign" TEST1=hash
TEST2="mixed quotes' TEST2=mixed quotes

od출력 에 따르면 /etc/environment실제로 다음 줄을 포함합니다.

export NODE_OPTIONS="--max-old-space-size=5120" #increase to 5gb

해시 기호에서 잘리지만 닫는 따옴표 뒤에 공백이 있으므로 따옴표가 인식되거나 제거되지 않으며 값에 공백과 따옴표가 모두 표시됩니다.

"단순 키=값 쌍"에 대한 설명서의 내용을 따르려면 다음을 사용할 수 있습니다.

# increase to 5 GB
NODE_OPTIONS=--max-old-space-size=5120

그러나 위의 의견과 관찰을 바탕으로 export다음과 같이 작동할 수도 있습니다.

# increase to 5 GB
export NODE_OPTIONS="--max-old-space-size=5120"

후행 공백을 정리할 때 주의하세요. 공백이 값에 포함되거나 다른 문제를 일으킬 수 있습니다.

관련된:

관련 정보