당신이하려는 것은 불가능합니다. 그 이유는 POSIX 시스템 (Linux, OSX 등)에서 하위 프로세스가 상위 프로세스의 환경을 수정할 수 없기 때문입니다. 여기에는 상위 프로세스의 작업 디렉토리 및 환경 변수 수정이 포함됩니다.
명령 줄에서 Node 스크립트를 실행하면 현재 프로세스 ( bash
,, zsh
무엇이든간에)가 자체 환경, 일반적으로 현재 환경의 복사 본인 새 프로세스를 생성합니다 (시스템 호출을 통해 변경할 수 있음). ; 그러나 그것은이 회신의 범위를 벗어납니다), 그 프로세스는 완전히 격리 된 상태에서해야 할 일을 할 수 있습니다. 하위 프로세스가 종료되면 제어가 환경에 영향을 미치지 않은 셸의 프로세스로 다시 넘겨집니다.
여기에는 많은 이유가 있지만 한 가지 이유는 백그라운드에서 (을 통해 ./foo.js &
) 스크립트를 실행하고 실행하면서 작업 디렉토리를 변경하거나 PATH
. 그것은 악몽이 될 것입니다.
쉘의 작업 디렉토리를 변경해야하는 일부 작업을 수행해야하는 경우 쉘에 함수를 작성해야합니다. 예를 들어 Bash를 실행하는 경우 다음을 입력 할 수 있습니다 ~/.bash_profile
.
do_cool_thing() {
cd "/Users"
echo "Hey, I'm in $PWD"
}
이 멋진 일을 할 수 있습니다.
$ pwd
/Users/spike
$ do_cool_thing
Hey, I'm in /Users
$ pwd
/Users
추가로 더 복잡한 작업을 수행해야하는 경우 해당 함수에서 항상 nodejs 스크립트를 호출 할 수 있습니다.
이것이 당신이하려는 일을 성취 할 수있는 유일한 방법입니다.