리눅스에서 사용자를 전환할 때 su 명령어를 사용한다. 이때 – 를 함께 쓰기도 하고 안 쓰기도 한다.
su user1
su - user1
둘다 사용자 전환이 똑같이 잘 되는 것처럼 보인다. 별 차이가 없어 보여서 둘 중 뭘 써야 맞는지 헷갈려하는 사람도 있다.
결론부터 말하면 su – 를 쓰는 습관을 들이는 게 좀 더 적절하지 않나 싶다.
1. su
su [사용자명]
-를 붙이지 않고 사용자를 전환하면 현재 사용자의 환경변수를 그대로 유지한다.
실제로 확인해보자.
user1 로그인 상태에서 TEST_VAR에 Hello라는 문자열을 환경변수에 넣고 su user2를 로그인하면 user2에서도 해당 환경변수가 유효한 걸 볼 수 있다.
즉 user2로 로그인했지만 user1의 환경변수가 적용되어 있다.
2. su –
su - [사용자명]
-를 붙여서 사용자를 전환하면 로그인하는 사용자의 환경변수를 새로 적용한다.
똑같은 예시를 보자.
이번엔 user2 로그인 상태에서 TEST_VAR2에 ‘Hello world’를 환경변수로 적용했다. 이후 su – user3로 로그인하자 user3에선 해당 환경변수가 적용되지 않는다.
즉 user3로 로그인하자 user3의 환경변수가 새로 적용됐다.
정리하면 su – 를 이용하는 게 로그인 전환이라는 측면에 더 정확히 부합하기 때문에 su 보다는 su -를 사용하는 편이 더 낫다.