하이픈이 있거나없는 "su"의 차이점은 무엇입니까?


87

나는 Linux 터미널에 익숙하지 않으며 su하이픈과 su하이픈이없는 차이점이 무엇인지 잘 모르겠습니다 ( 예 : su - usernamevs.) su username.

나는 문서를 조사 했지만 거기에서 언급되지 않았습니다. 누군가 나를 도울 수 있습니까?


"로그인 쉘"은 종종 대화식 쉘을 의미합니다. 이것은 스크립트를 실행하고 종료하는 쉘과 비교합니다.
Shahbaz

6
그것은 바로 거기에 당신이 링크 같은 맨 " - 쉘을 로그인 쉘로 만들어, -l, --login "
ArjunShankar

1
당신은 그것을 구글 할 필요가 없습니다, 그냥 입력하십시오 su --help.
Art Shayderov

1
noteworthyness 중 :이 같은 새 로그인 쉘을 시작하려면 하이픈을 사용하지 않고 루트에 스와 - 보내고 경우에 특히 유용합니다 당신은 $PATH업데이트되지 않습니다 때문에 직접 루트 전용 바이너리를 호출 할 수 없습니다 /sbin/usr/sbin
개렛

답변:


85

"-"와 "하이픈 없음"의 차이점은 후자가 기존 환경 (변수 등)을 유지 한다는 것입니다 . 전자는 새로운 환경을 만듭니다 (사용자 환경이 아닌 실제 사용자의 설정으로).

https://wiki.archlinux.org/index.php/Su

하이픈에는 두 가지 효과가 있습니다.

1) 해당 사용자로 로그인하여 현재 디렉토리에서 새 사용자의 홈 디렉토리 (예 : 루트 사용자의 경우 / root)로 전환

2) ~ / .bashrc에 따라 환경 변수를 새로운 사용자의 환경 변수로 변경합니다. 즉, su의 첫 번째 인수가 하이픈 인 경우 현재 디렉토리와 환경은 새 사용자가 기존 세션을 대신하는 대신 실제로 새 세션에 로그온 한 경우 예상되는 것으로 변경됩니다.


이 사이트-> admon.org/difference-between-login-shell-and-non-login-shell 은 하이픈없이 사용하면 / etc / profile 및 ~ / .bash_profile 파일이 실행되지 않는다고 말합니다. 이 두 파일은 사용자 환경에 어떤 의미가 있습니까?
user574183

2
이 두 가지는 사용자 환경 을 설정 하는 파일입니다. :) 실행 하지 않으면 원래 환경을 유지 해야합니다. "-"를 사용하여이를 실행한다는 것은 환경이 "su"하려는 사용자와 동일 하게 만드는 것을 의미 합니다. 하이픈을 사용하면 무엇을 일반적으로 원하는 내가 사용 - "-"습관적으로 때마다 I "SU".
paulsm4

실행 순서가 정말로 중요합니까? 나는 그 사이트에서 두 개의 파일 / etc / bashrc ~ / .bashrc가 비 로그인 쉘에서 역순으로 실행된다고 언급했기 때문에 이것을 묻습니다. 누군가 도와주세요
user574183

1
물론 @ user574183, 예를 들어, 하나는 무언가를 설정하고 다른 하나는 무언가를 설정 해제하거나 다른 것으로 설정 한 경우
fikr4n

3

su -루트에 대한 로그인 쉘을 시작합니다. 일반 쉘과의 차이점은 예를 들어이 사이트 를 참조하십시오 .


2
그건 사실이지만 질문이 아닙니다 :)
paulsm4

잘못되었으므로, 대시로 su를 실행하고 다른 사용자를 위해 쉘을 시작하도록 할 수 있습니다. 다음을 실행하고 출력을보십시오sudo su - "testuser" -c "whoami"
David Hergert

@DavidHergert Yep, 그리고 사용자 이름이 없으면 루트 쉘을 엽니 다.
Lars Kotthoff

@LarsKotthoff-알겠습니다. 죄송합니다. 대시가 루트 셸인 것처럼 들리는 것처럼 들립니다. 내 지역 거주자 SA조차도 나를 혼란스럽게했습니다. :)
David Hergert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.