리눅스 su 와 su – 중 어떤걸 써야 할까?

리눅스에서 사용자를 전환할 때 su 명령어를 사용한다. 이때 – 를 함께 쓰기도 하고 안 쓰기도 한다.

su user1
su - user1

둘다 사용자 전환이 똑같이 잘 되는 것처럼 보인다. 별 차이가 없어 보여서 둘 중 뭘 써야 맞는지 헷갈려하는 사람도 있다.

결론부터 말하면 su – 를 쓰는 습관을 들이는 게 좀 더 적절하지 않나 싶다.

1. su

su [사용자명]

-를 붙이지 않고 사용자를 전환하면 현재 사용자의 환경변수를 그대로 유지한다.

실제로 확인해보자.

user1 로그인 상태에서 TEST_VAR에 Hello라는 문자열을 환경변수에 넣고 su user2를 로그인하면 user2에서도 해당 환경변수가 유효한 걸 볼 수 있다.

즉 user2로 로그인했지만 user1의 환경변수가 적용되어 있다.

linux su su- (2)

2. su –

su - [사용자명]

-를 붙여서 사용자를 전환하면 로그인하는 사용자의 환경변수를 새로 적용한다.

똑같은 예시를 보자.

이번엔 user2 로그인 상태에서 TEST_VAR2에 ‘Hello world’를 환경변수로 적용했다. 이후 su – user3로 로그인하자 user3에선 해당 환경변수가 적용되지 않는다.

즉 user3로 로그인하자 user3의 환경변수가 새로 적용됐다.

linux su su- (1)

정리하면 su – 를 이용하는 게 로그인 전환이라는 측면에 더 정확히 부합하기 때문에 su 보다는 su -를 사용하는 편이 더 낫다.

댓글 남기기