su -
명령과 su
명령의 차이는 사용자 계정을 전환할 때 로그인 환경을 어떻게 처리하는지에 있습니다.
su -
명령은 대시(-)를 포함합니다. 이 명령은 사용자를 전환하고, 전환된 사용자의 환경 변수를 초기화합니다. 마치 해당 사용자가 새로 로그인한 것처럼 사용자의 홈 디렉터리로 이동하고, 해당 사용자의 로그인 셸을 시작하며, 해당 사용자의.bash_profile
,.bashrc
,.profile
등의 환경 설정 파일을 로드합니다. 이것은 “로그인 셸(login shell)”을 시작하는 것으로 간주됩니다.su
명령은 단순히 사용자를 전환하기만 하며 현재 셸의 환경 변수를 유지합니다. 이 명령은 새 사용자의 홈 디렉터리로 이동하지 않고, 로그인 셸을 시작하지 않으며, 환경 설정 파일을 로드하지 않습니다. 이것은 “비로그인 셸(non-login shell)”을 시작하는 것으로 간주됩니다.
예를 들어, root
사용자로 전환할 때 su -
명령을 사용하면 root
사용자의 환경 설정에 따라 새로운 셸 세션이 시작되지만, su
명령을 사용하면 현재 사용자의 환경 설정을 계속 유지합니다.
간단하게 말하자면, su -
는 사용자 전환과 함께 해당 사용자의 로그인 환경을 완전히 가져오고 싶을 때 사용하고, su
는 단순히 사용자 권한만 전환하고자 할 때 사용합니다.