루트로 실행 중이지만 $USER가 일반 사용자를 반환합니까?

루트로 실행 중이지만 $USER가 일반 사용자를 반환합니까?

그래서 쉘 스크립트를 실행해 보려고 하는데, 루트로 실행해야 하기 때문에 동작하지 않습니다. 문제는 내가 루트로 로그인했다는 것입니다주문하다.

어떻게 이럴 수있어?

root@polo-E15301:/home/polo/Downloads# echo $USER
polo      <<<---- regular user
root@polo-E15301:/home/polo/Downloads# whoami
root
root@polo-E15301:/home/polo/Downloads# echo $UID
0
root@polo-E15301:/home/polo/Downloads# 

답변1

구체적으로 루팅할 때 su,su 아니요USER로그인 쉘이 요청되지 않는 한 설정됩니다.man su설명하다

이전 버전과의 호환성을 위해 su기본적으로 현재 디렉터리는 변경되지 않으며 환경 변수만 설정됩니다 HOME( SHELL더하기 USERLOGNAME대상인 경우사용자루트가 아님) 혼합 환경으로 인해 발생하는 부작용을 방지하려면 항상 이 --login옵션(바로가기 대신 )을 사용하는 것이 좋습니다 .-

사용하시면 루트로 설정되어 있는 것을 su --login보실 수 있습니다 .USER

쉘 스크립트에서는 id환경 변수에 의존하는 대신 유사한 도구를 사용하여 루트 권한을 테스트해야 합니다. 당신은 또한 볼 수 있습니다$USER 및 $USERNAME 환경 변수는 누가 설정합니까?

관련 정보