답변:
Ubuntu Desktop의 일반 사용자 인 경우 유일한 로그인 쉘은 ... 데스크톱입니다 (암호를 입력하려면 오른쪽에 입력하십시오). 글쎄, 기술적으로 GUI를 시작하는 로그인 쉘이지만 전문 용어가 들어갑니다. 그리고 네, 설정을 읽습니다..profile
데스크탑에 문제가 있고 + + 바로 가기 를 사용하여 가상 터미널로 전환하는 경우 (정상 사용자) 로그인 쉘 처럼 보이는 로그인 쉘을 볼 수있는 유일한 시간입니다 .CtrlAltF1
ssh
(또는로 로컬로 연결 ssh localhost
)bash -l
(또는 sh -l
) 로 초기 로그인 쉘 시뮬레이션root
로그인 쉘 시뮬레이션sudo -i
sudo -u username -i
root
root
과 사용자 (및 그 암호)su - username
sudo login
명령을 사용하여 사용자 전환~/.pam_environment
(변수 만, 거기에 bash 명령이 없습니다!) 넣고 로그 아웃하고 로그인하고 그놈 터미널뿐만 아니라 데스크탑에도 마술처럼 나타나는 것을 지켜보십시오!
/etc/profile
, /etc/profile.d
또는 ~/.profile
.
나는 생각하지 않습니다 올바른 대답은 "기술적 인 전문 용어"없이 부여 할 수 있습니다. 이 질문은 "로그인 쉘이란 무엇입니까?"라는 쿼리에 대해 Google에서 처음 나타나는 질문이므로 아래에보다 정확한 답변을 제공하고 있습니다.
로그인 쉘은 단순히 로그인 쉘이라고하는 쉘입니다. 일반적으로 로그인하는 응용 프로그램이 쉘에 로그인 쉘이 시작된다고 알려주는 것은 아니지만 로그인 후 팝업되는 쉘을 의미 하지는 않습니다 . 쉘에게 로그인 방법을 알려주는 방법은 다음과 같습니다.
-l
하거나 --login
인수를 실행 하면 (알지 못하는 쉘은 알지 -l
못하지만 --login
일부 쉘에서만 지원됩니다).argv[0]
설정된 쉘 실행 -{some_string}
(예 : HYPHEN-MINUS가 보통 argv[0]
또는 다른 문자열 앞에 추가됨 ). 이것은 ssh와 su 가하는 일입니다 : su는 -su
as argv[0]
( argv[0]
현재 실행중인 실행 파일 이름과 관련이 있다고 생각하는 모든 사람들에게 안녕하세요)로 실행 파일을 실행하고, ssh는 -zsh
사용자가 /bin/zsh
쉘로 설정했을 때 zsh를 실행 합니다.쉘의 로지스틱스는 암호를 요구하거나 다른 인증 절차를 수행하는 사람과는 전혀 관련이 없습니다. ssh 또는 login (또는 urxvt와 같은 일부 터미널 에뮬레이터)과 같은 일부 프로그램 argv[0]
은 HYPHEN-MINUS로 시작 하는 로그인 프로그램으로 쉘을 실행 합니다. su 또는 sudo (또는 zsh :의 -
PRECOMMAND MODIFIERS 섹션에 설명 된 사전 명령 수정 자 참조)와 같은 일부 man zshmisc
는 기본적으로이를 수행하지 않지만 그렇게 할 수 있습니다. 일부는 쉘에게 인자 (즉, bash -l
)를 사용하여 로그인하는 것을 쉘에게 알려주는 유일한 옵션을 가지고 있습니다 : ssh with command argument (명명하게 ssh에게 원격 끝에서 실행할 것을 알려줍니다).
일반적으로 먼저 셸을 호출하는 데 사용되는 프로그램의 설명서를 참조하여 셸이 로그인인지 여부를 확인하고 두 번째로 앱이 로그인 셸을 시작할지 여부를 결정하는 테스트를 수행하는 echo
것이 .profile
좋습니다 (예 :에 추가 ).
argv[0]
중 하나에 exec*
자연과 피할 수없는 기능 : 당신은 항상 공급 모두 argv[0]
실제로 명령을 사용할 때 실행 경로와 exec*
당신이 이제까지하지 원하는 경우에도 기능을 argv[0]
명령 실행과 다를 수 있습니다. 다른 언어는 고유 한 방법을 제공합니다. 특히 배쉬는 사용 할 수 있습니다 exec -a new_argv0 bash
, 그러나 이것은 물론, 당신이 무엇 이건 쉘을 실행하는 현재 대체하게됩니다 exec
에드, 그래서 당신은 서브 쉘 (사용해야 할 수도 있습니다 (exec -a -zsh zsh)
)
$0
, 그리고 어쩌면 다른 것 (변수, 설정 등)이 설정 파일에서 쉘의 로지가 감지 될 수 있도록 설정되었지만 누가 실제로 이것을 감지하여 차이를 만들지? 그게 내가 아는 전부 야.