sudo env가 모든 환경 변수를 표시하지 않는 이유는 무엇입니까?

sudo env가 모든 환경 변수를 표시하지 않는 이유는 무엇입니까?

/etc/profile.d/somescript.sh의 스크립트 파일에 변수를 설정하고 /etc/sudoers를 수정하고 다음과 같이 sudoers 파일에 "ansible" 사용자를 추가했습니다.

Defaults !env_reset
ansible    ALL=(ALL) NOPASSWD:   ALL

첫 번째 줄에서 아무것도 출력되지 않는 이유는 무엇입니까? "sudo env"가 모든 환경 변수(일부만)를 표시하지 않는 이유는 무엇입니까?

[ansible@ACEPP-LM-01 ~]$ sudo env | grep ENV
[ansible@ACEPP-LM-01 ~]$ sudo echo $ENV
PP
[ansible@ACEPP-LM-01 ~]$ echo $ENV
PP
[ansible@ACEPP-LM-01 ~]$ env | grep ENV
ENV=PP

나에게 필요한 해결책은 루트 및 사용자 ansible에 대해 ~/.bashrc에 별칭 sudo="sudo -i"를 배치하는 것이었습니다.

답변1

-E다음 매개변수를 사용해 보세요 sudo.

-E, --preserve-env
             Indicates to the security policy that the user wishes to pre‐
             serve their existing environment variables.  The security
             policy may return an error if the user does not have permis‐
             sion to preserve the environment.

관련 정보