2016-10-31 5 views
2

이 게시물을 더 이상 사용할 수 없도록 삭제하십시오.곧 삭제해야합니다

+0

'cmd'를'bash -c cmd'로 변경하십시오 (env 변수가'.bash_profile'에 의해 설정되었다고 가정하십시오). – ikegami

+0

매우 제한된 PATH입니다. '/ bin' 또는'/ usr/bin'에 대한 접근은 조금 특이합니다. 그게 당신이 의도 한 것이지? 또한'export HOME =/home/tim' 행은 좋지 않습니다. '= '기호 주위에 공백이 없어야합니다. –

+0

예, 맞습니다. 공간이 없습니다. 나는 "수동으로"라인을 썼을 때 실수로 그들을 추가했고, 경로는 일부/bin 폴더로 이어졌습니다. – Thomas

답변

2

해시는 환경 변수에 액세스하고 조작 할 수 있습니다. Environment in perlrun을 참조하십시오. 편의를 위해 코어 모듈 Env도 있습니다. 우리는 print $ENV{HOME}이라고 말하거나 새로운 해시 키를 설정하여 환경 변수를 추가하거나 기존 해시 키 값을 변경 (새 값 쓰기) 할 수 있습니다. 이 환경은 프로그램에 의해 시작된 프로세스에 의해 상속됩니다.

그래서 부모

use warnings 'all'; 
use strict; 

$ENV{VAR}  = '...'; # HOME, PATH, ... or a new variable 
$ENV{PERL5LIB} = '...'; # where some modules are installed 

system("script.pl"); 

$ENV{VAR}을 사용할 수 있습니다

use warnings 'all'; 
use strict; 
use SomeModule qw(func); # SomeModule is installed in PERL5LIB 

print "$ENV{VAR}\n"; 
func(); 

라고 직접 use 모듈 PERL5LIB에 설치할 수있는 프로그램 script.pl와.

이것은 프로그램이 시작하는 프로세스에만 영향을줍니다. 그것은 부모 (데몬은 어쨌든 가지지 않을 것입니다)에 대한 환경을 변경하지 않으며 프로그램과 독립적 인 것들에 영향을 미치지 않습니다.

–을 추가하고 싶습니다. 적절한 데몬을 실행하고 있는지 확인하십시오. 예를 들어 Complete Dissociation of Child from Parent in perlipc을 참조하십시오. in perlipc SIGHUP을 이용하는 방법을 볼 수도 있습니다.

+0

@Alex 코드 샘플 – zdim

+0

에 단어가있는 설명을 나누어 답을 편집했습니다. 도움이되었습니다. 하지만 마지막으로, 필자는 시스템에 다음과 같은 명령을 실행할 수있는 패키지 번들을 설치했습니다 : "bundle/my/path [some options]"그래서이 데몬에게 "번들"명령을 사용하라고했습니다. 그것은 "번들"이라는 명령을 찾을 수 없다는 것을 알려줍니다. 무엇이 잘못 될지 생각하고 있습니까? – Thomas

+0

@Alex 쉘에서 실행할 때,'bundle'은 쉘 설정에서 정의 된 표준 경로에 있습니다. 스크립트에서'bundle'을 실행하여 쉘과 관련되게 할 수 있습니다. 그러면'PATH'를 사용할 수 있지만 쉘을 바이 패스하면 그렇지 않습니다. 스크립트에서 나는 실행할 프로그램의 전체 경로를 지정하고자하므로'/ path/to/bundle/bundle ... '. – zdim

관련 문제