2016-08-12 4 views
1

lua 스크립트 기능을 처음 사용했습니다. 내가 사용하려고 , 루아 스크립트에서lua를 사용하여 bash 환경 변수를 설정하는 방법

  1. os.execute ("수출 MY_VAR = 10")
  2. io.popen ("수출 MY_VAR = 10")

.

루아 스크립트가 실행 된 후 나는 에코 $의 MY_VAR를 사용하여 쉘에서 MY_VAR 변수를 읽어보세요하지만 난 MY_VAR은 우리가 루아 스크립트를 사용하여 환경 변수를 설정하는 방법 (10)

로 설정하기 표시되지 않는 이유는 무엇입니까?

+0

당신이 할 수있는 해결 방법 중 하나는 Lua 코드가 Bash 스크립트의 내용을 출력하고 bash "source"또는 "eval"스크립트를 사용하는 것입니다. – hugomg

답변

4

문제는 문제가 아닙니다. 문제는 프로세스 환경이 어떻게 작동하는지 오해 한 것입니다.

당신이 io.popenos.execute 실행하거나 때마다 당신이 새로운 환경으로 새로운 프로세스를 실행하고 있습니다.

그래서 당신은 할 수 있지만 정확하게는 점에서 MY_VAR을 설정하면 환경을 처리하는 (그리고 프로세스의 어린이 프로세스로 실행되는 프로세스에 영향을 미칠 것)이 실행 된 프로세스의 죽음을 넘어 생존하지 않으며, 그렇게 볼 수없는 다른 모든 프로세스에 의해.

lua 프로세스의 환경 (그러면 프로세스의 환경에 영향을주는 루아)에 영향을 미치려면 setenv 시스템 기능에 대한 바인딩이 필요합니다 (루아는 그 자체로 제공하지 않습니다) lu가 포함하는 것에 사용하는 C 테스트를 통과하지 못함).

+1

예. luaposix에는'setenv' 바인딩이 있습니다 : http://luaposix.github.io/luaposix/modules/posix.stdlib.html#setenv –

관련 문제