2017-12-12 13 views
0

내 노드 앱에서 $PATH 변경 사항을 볼 수 없습니다.우분투의 노드가 다른 사용자/역할을 사용합니까?

내가 무슨 짓을 :

  1. SSH를 원격 서버에 사용자 달러 (A $)의 PATH를 추가하여 .bash_profile을 수정 ubuntu
  2. 같이 export PATH=$PATH:~/, 다음 source는 새로운 변경 사항을 적용합니다. 서버에서 실행중인 노드 응용 프로그램에서

  3. , 나는 $ PATH

  4. 로그 된 경로 내 새로운 변화를 포함하지 않는 로그 아웃하는 sh 스크립트를 실행 node-cmd을 사용했다.

왜 노드 앱에 다른 $ PATH가 표시되는지, 다른 사용자/역할을 사용하는 이유는 무엇입니까?

+1

have'.bash_profile'을 변경 한 후 nodejs 앱을 다시 시작하십시오. – num8er

+1

'node-cmd'는'.bash_profile'을 소싱하지 않습니다. 왜 그럴까? – RaphaMex

+1

@RaphaMex 그가 node-cmd 패키지를 사용하여 명령을 실행하는 앱을 실행하고 있다고 생각합니다. 그는 소스 .bash_profile이라고하는 환경 변수를 변경했지만 nodejs 응용 프로그램은 다시 시작하지 않았습니다. 환경 변수는 외부에서 동적으로 수정할 수 없습니다. 갑작스런 변경이 발생하면 앱이 다운 될 수 있습니다. 그래서 응용 프로그램 시작시 환경 변수를 process.env로 가져와 업데이트하는 것입니다. 응용 프로그램을 다시 시작하거나 외부에서 수정할 수있는 데이터베이스 또는 nosql 저장소에서 이러한 변수를 가져 오는 것으로 파악해야합니다. – num8er

답변

0

현재 사용자 홈 디렉토리의 경로를 가져 오려면 os 모듈을 사용하십시오.

os.homedir() #

추가에서 : v2.3.0

결과 :

os.homedir() 메소드는 같은 현재 사용자 의 홈 디렉토리를 반환 끈.

사용법 :

const homedir = require('os').homedir(); 
process.env.PATH = homedir; 

P.S. 내가 child_process 모듈의 exec, execFile, spawn 등을 사용할 수있을 때 node-cmd를 사용할 이유가 없습니다. 추가 변수를 전달할 수있는 옵션을 사용할 수 있습니다.

+1

다른 방법을 사용해 주셔서 감사합니다! –