환경 변수를 설정 한 후 "유효하지 않은 식별자"오류를 수정하는 방법은 무엇입니까?


12

Ubuntu 14.04 LTS에서 cocos2dx를 설정하려고하는데 환경 변수를 설정 한 후 (in .bashrc)이 오류가 발생하기 시작합니다.

bash: export: dev/cocos2d-x-3.2/tools/cocos2d-console/bin': not a valid identifier 
bash: export:/home/john/android': not a valid identifier 
bash: export: dev/android-ndk-r10b': not a valid identifier 
bash: export:dev/adt-bundle-linux-x86_64-20140702/sdk': not a valid identifier

그리고 나는 그것을 고치기 위해 무엇을 해야할지 모르겠다.


1
변수 설정 방법을 정확하게 보여 주어야합니다.
glenn jackman

답변:


17

환경 변수를 설정 한 후

제대로하지 않은 것 같습니다.

오류가 발생하면 경로 (예 :) 가 변수에 지정된 값이 아니라 변수 /home/john/android이름 으로 사용되고 있음 을 의미합니다.

  • 변수를 할당하는 올바른 구문은 NAME=value입니다.
  • 변수를 내보내는 올바른 구문 (있는 경우 값이 이미있는 경우)은 export NAME입니다.
  • 변수 (할당 된 값으로)를 할당하고 내보내는 올바른 구문은 export NAME=value입니다.

세 번째 작업을 시도했지만 잘못된 구문을 사용하고 있다고 생각합니다. 현재보고있는 것과 같은 오류를 생성 할 수있는 5 가지 일반적인 실수는 다음과 같습니다.

  1. 대신 공백을 사용합니다 =. export NAME value부정확하다; value그런 다음 내보낼 후속 변수의 이름으로 해석됩니다.

    (때문에 발생 export NAME1 NAME2 이다 여러 변수를 내보내기위한 정확한 구문).

  2. 주위에 공백을두기 =. 많은 프로그래밍 언어에서, 대부분 공백으로 연산자를 채우는 것이 유효하고 문체 적으로 선호됩니다. 그러나 셸 스크립트 (또는 셸 명령을 실행하는 다른 상황)에서 변수에 값을 할당하려면 허용되지 않습니다. NAME = value( export명령 또는 다른 방식으로) 작동하지 않습니다. 를 사용해야합니다 NAME=value.

    ( export NAME = value수출 변수에 대한 시도라는 이름 NAME, =그리고 value. 다행히이라는 변수를 수출하려고하면 자동으로하기 때문에 성공한 것처럼 결코 =대조적으로. 구문 오류입니다 export NAME= value작업에 나타나지만 할당하지 않습니다 valueNAME, 그것은 빈 할당 --instead 길이가 0 인 문자열을 가져 NAME와서 내보내고 변수를 별도로 내 보냅니다 value. 둘 다 일반적인 실수입니다.)

  3. 변수 값의 일부를 공백으로 분리합니다. 환경 변수 에는 공백 포함될 수 있지만 실제로는 환경 변수에서 필드 구분 기호로 거의 사용되지 않습니다. 단일 변수에 의도적으로 여러 경로가 포함 된 경우 일반적으로 경로 :를 구분하는 데 사용됩니다.

  4. 변수를 지정할 때 공백을 인용하지 않습니다. 때로는 환경 변수의 값에 공백이 있어야합니다. 예를 들어, 실제로 공백이 포함 된 디렉토리의 이름 일 수 있습니다. 이 경우 공백을 인용해야합니다.

    이를 수행하는 한 가지 방법은 앞에을 두는 것입니다 \. cd 명령에 전달 된 괄호를 어떻게 보호 할 수 있습니까?를 참조하십시오 . 삭제 파일 수 없습니다 다른 방법에 대한 정보 - 답변에서 제시 한 방법도 문제는 환경 변수에 할당하는 방법에 대한 구체적 경우에도 적용됩니다.

    예를 들어, 다음과 같이 환경 변수 SILLYPATH를 값 으로 내보내는 몇 가지 방법이 있습니다 /home/ek/silly name/bin.

    export SILLYPATH=/home/ek/silly\ name/bin
    export SILLYPATH='/home/ek/silly name/bin'
    export SILLYPATH="/home/ek/silly name/bin"

    셸에서 사용하거나 널리 사용되는 환경 변수에 할당해야하는 폴더에 공백이 포함되어 있으면 이름을 바꾸면 도움이 될 수 있습니다. (그러나 때로는 비현실적이거나 바람직하지 않습니다.)

  5. 아무것도 할 필요가 없을 때 변수 할당 및 / 또는 내보내기 이것은 일종의 메타 실수입니다. 특정 기술 문제는 종종 위의 문제 중 하나이지만 해결 방법은 문제를 해결하는 것이 아니라 문제를 일으키는 선 또는 그 일부를 제거하는 것입니다. .bashrc물론 코드를 무차별 적으로 제거하지 마십시오 . 그러나 export실수로 실수가 추가되었거나 의도하지 않은 코드가 실수로 많을 수 있습니다. 예를 들어, 다음과 같이 작성한다고 가정하십시오.

    echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc

    추가 .bashrc한 다음 다시 제공하십시오. 그러나 대신 다음과 같이 썼다고 가정하십시오.

    echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc  # WRONG!

    그런 다음 export명령은 단지의 증강 값을 내보낼 것 PATH뿐만 아니라라는 이름의 수출 변수를 시도 할 것입니다 .그리고 당신이 원하지 않는 무엇이다. 변수 이름에 금지 된 문자가 포함되어 있으므로 새 대화식 bash 쉘을 시작할 때마다 오류가 발생합니다./home/your-username/.bashrc

    이 문제를 방지하려면, 내가 편집을 제안 .bashrc편집기에서 (예를 들어 nano ~/.bashrc, gedit ~/.bashrc)보다는 그것의 끝 출력을 리디렉션보다 >>.

.bashrc파일에 있는 버그를 찾아서 수정하기에 충분한 정보라고 생각 합니다. 추가 도움이 필요한 경우 분석을 위해 해당 파일의 전체 내용을 게시해야합니다. (이 문제와 같은 일반적인 대답을 만들기 위해 문제가 충분히 자주 발생하고 오류 메시지가 투명하게 발생하는 것은 우연의 일치입니다.)


2
감사합니다! 자세한 답변입니다. 내 경우는 주위에 공간을 두는에서 = 문제였다. 나는 이것을 잠시 동안 고투하고 있었다.
Rengas

5

실행 중인지 확인하십시오.

export ENV_VARIABLE

오히려 :

export $ENV_VARIABLE

그렇지 않으면 변수 자체가 아닌 변수 값을 내보내려고하므로이 오류가 발생합니다.


1

공백 과 달러 기호를 제거 하십시오. 예를 들어 이것은 SSH를 통해 웹 서버에서 장고 설정 모듈을 설정할 수있는 것과 같은 방식으로 작동합니다.

export DJANGO_SETTINGS_MODULE=myapp.settings

0

웹에서 역 쉼표로 무언가를 복사하고 환경이나 bashrc 파일을 업데이트 할 때이 문제가 자주 발생하는 것을 보았습니다.

붙여 넣을 내용에 반전 된 쉼표를 수동으로 입력하는 것이 좋습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.