su와su-의차이점 (1)

su와 su - 모두 root의 권한으로 변경된다. 하지만 환경변수에서 차이가 있다. 

su로 root가 되었다면 root의 환경변수가 아니라 내 환경변수를 사용한다.

반면에 su - 로 root가 되었다면 내 환경변수가 아닌 root의 환경변수를 사용하게 된다.

 

예를 들어 내가 aaa계정으로 로그인을 하면 나는 /home/aaa 내의 환경변수 설정파일(.bashrc나 .profile, .bash_profile등)에 설정되어있는 환경변수를  사용하게 된다. 이때 su명령어를 이용하여 root가 되었다고 치자. 나는 root권한을 가지기는 했지만 내가 사용하는 환경변수들은 aaa의 환경변수들이다. 마치 root의 가면을 쓴 것과 같은것이다. root와 aaa의 환경변수 설정이 동일하다면 문제될 것이 없겠지만 일반적으로 그럴일은 별로 없을 것이다. 반면에 su - 명령어로 root가 되었다면 나는 완전히 root로 변신한 것과 같다. 환경변수까지 모두 root의 환경변수를 이용하기 때문이다.

 

무슨 말을 하는지 잘 모르겠다고?? 아래 예제를 보자.

 

 

kihyunhwang계정으로 로그인해서 echo명령어로 PATH환경변수를 출력해보고, su로 root가 된 뒤 또 출력해보고, su -로 root가 되어 또 출력해 보았다.

결과를 잘 보면 첫번째 두번째는 PATH변수의 값이 동일했다. 하지만 세번째 PATH변수 값은 다르다는게 보일것이다.

 

 

하지만 아직 확신이 안서는 것은 모든 환경변수가 바뀌냐 안바뀌냐이다. 특정 파일에 있는 변수들만 바뀌는 건지 아직 확인을 못해보았다. 시간있는 분들이 확인해서 댓글 달아주시면 감사 감사!!