내 프로젝트에서 스크립트를 실행하고 있는데 다음 명령이 표시됩니다.
su - `whoami`
몇 가지 기본적인 질문이 있습니다.
- 이 명령은 무엇을 합니까?
- whoami 명령 이외의 ``따옴표의 의미는 무엇입니까?
- - 그것은 무엇에 사용됩니까?
나는 su
이것이 사용자 전환을 의미한다는 것을 알고 있습니다.
답변1
이것백틱( ``
)예명령 대체: 백틱 내에서 명령을 실행한 결과로 대체됩니다. 여기에서 실행되어 whoami
사용자 이름을 인쇄합니다.
이것-
뒤쪽에su
달리다su
로그인 쉘: 로그인 쉘은 특정 환경 구성 등을 처음부터 읽습니다. 기본적으로 사용자의 쉘을 일반 쉘로 실행하지만 모든 작업을 수행하지는 않습니다(링크 참조).
su
항상 새 사용자 세션을 시작하고 처음부터 로그인하는 것처럼 사용자를 다시 인증하세요. 외부의 모든 환경 변수는 내부 셸에서 지워집니다.
따라서 이것은 명령과 동일합니다(머신의 사용자 이름도 " blunderboy
"라고 가정).
su - blunderboy
이는 "blunderboy로 새 세션을 다시 인증하고 로그인 쉘을 실행한다"는 의미입니다.
이 명령의 전반적인 결과는 현재 사용자로 처음부터 새 세션을 시작하는 것입니다.. 왜 이런 일을 귀찮게합니까? 눈에 띌 수 있는 몇 가지 부작용 su
: 특히 새 사용자 세션을 시작하기 때문에 사용자가 속한 그룹의 변경 사항은 물론 다른 사용자 또는 권한 변경 사항도 확인할 수 있으며 환경 변수는 모두 재설정됩니다. 일반적으로 새 그룹에 사용자를 추가하는 것은 다시 로그인한 후에만 적용됩니다. su
이 목적을 위해 다시 로그인하는 것으로 간주되므로 시작되는 셸은 새 그룹을 활성화합니다.
1 이것은 단순화된 것이지만 이 설명에는 충분합니다.