`sudo su` 뒤에 환경 변수가 표시되지 않습니다.

`sudo su` 뒤에 환경 변수가 표시되지 않습니다.

user_a사용자 환경 변수에서 다음을 설정했습니다 .profile. export NODE_ENV=dev

사용자로 로그인하고 bash 쉘을 시작하면 환경 변수가 올바르게 설정됩니다. 이렇게 하면 예상대로 인쇄 echo $NODE_ENV됩니다 .dev

다른 사용자로 로그인한 user_b다음 user_amake 명령을 통해 sudo su user_a환경 변수가 설정되지 않습니다.

환경 변수가 NODE_ENV설정되었는지 확인하는 방법은 무엇입니까?

답변1

명령을 실행하면 su user전체 프로필을 로드하지 않고 해당 사용자로 전환됩니다. $HOME, $SHELL및 변수 만 $USER로드됩니다. $LOGNAME사용자로 전환할 때 사용자의 전체 프로필을 로드하려면 --login이 플래그를 사용하여 해당 사용자로 로그인했음을 지정해야 합니다. 이 플래그에 대한 단축키는 -su 뒤의 대시( )이므로 명령은 다음과 같습니다 su - user.

답변2

env_keep += "NODE_ENV"에 다음과 같이 추가 하는 것이 좋습니다 /etc/sudoers.d/.

  1. sudo -i문제가 발생할 경우를 대비해 루트 셸을 실행하세요 (한 번 실수를 했고 고치는 것이 정말 귀찮았습니다).
  2. 별도의 쉘에서 다음을 실행하십시오.sudo visudo -f /etc/sudoers.d/envkeep
  3. 이 파일에 다음을 추가하세요.Defaults env_keep += "NODE_ENV"
  4. 저장하고 종료한 후 다시 시도하세요 sudo -i. 작동해야 하며 NODE_ENV저장해야 하는 쉘 에 넣어야 합니다 .

관련 정보