2014-06-05 2 views
2

환경 변수를 사용하여 파일을 가리키고 서브 루틴을 통해 실행하고 변수와 연결하려고합니다. 나는 윈도우로 관리하지만 Linux 환경 변수를 Perl 스크립트의 경로로 사용

내가 가진 것입니다 .. 리눅스에서 근무 구문을 얻을 수 없습니다

Use of uninitialized value $ENV{"APP_HOME"} in concatenation (.) or string at ./XXXXX.pl 
: 오류가있는이 라인에 도달 할 때

my $config = read_config("$ENV{APP_HOME}/config/APP-linux.cfg"); 

내 스크립트는 죽는다

APP_HOME은 환경 변수로 정의됩니다 (집합을 사용하여 확인 됨). 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

'echo $ APP_HOME'이 쉘에서 올바른 값을 반환합니까? –

+0

@HunterMcMillen 그게 ... 제공 : 이름 "main :: APP_HOME"은 한 번만 사용됩니다. ./test.pl 줄 8에 오타가있을 수 있습니다. 정의되지 않은 값인 ./에서 "echo"메서드를 호출 할 수 없습니다. test.pl 8 행 – AMcNall

+0

터미널에서는 Perl 내부가 아니라 터미널에 있습니다. –

답변

0

좋아요, 해결책은 저의 어리 석음이었습니다.

APP_HOME=$HOME/APP/DATA/STORAGE; export FINE_DIR 

RAPID_DIR가 될 권리가 없습니다 : 내가 사용의 .bashrc에 변수를 설정합니다. 복사/붙여 넣기와 가난한 감독의 나머지였습니다 ... FINE_DIR을 APP_HOME으로 변경하고 모두 좋았습니다.

모든 안내에 감사드립니다!

+0

그건 그렇게 할 것입니다. – Miller

1

bash에서 =은 단순히 쉘 변수를 만듭니다. 이들은 자동으로 환경으로 내보내지지 않습니다. 당신은 그것을 명시 적으로해야합니다.

$ AA=hello 

설정을하고 (단일 문에서) 다른 하나를 보냅니다 :

쉘 변수를 설정

$ export BB=there 

시작에게 새로운 프로세스 :

$ bash 

짜잔를! 만 내 보낸 변수는 새로운 프로세스에 의해 상속됩니다 : set이 변수를 설정하지 않습니다 것을

$ echo "[$AA] [$BB]" 
[] [there] 

참고. set AA=hello은 Windows 쉘이 수행하는 작업을 수행하지 않습니다.

관련 문제