로그인 쉘과 비로그인 쉘을 언급하는 여러 기사를 읽었
지만 여전히 혼란스럽습니다.
로그인 쉘과 비로그인 쉘의 차이점은 무엇입니까? - Unix 및 Linux 스택 교환
UNIX 사고방식: 로그인 쉘인가, 비로그인 쉘인가?
간단히 말하면,
내 컴퓨터가 시작될 때 시작되는 쉘은
로그인 쉘이 아닌가요, 아니면 비로그인 쉘이 아닌가요?
$ echo $SHELL
/bin/bash
$ echo $0
-bash
또한 프로그램에서 호출한 쉘이 로그인 쉘인지 여부를 확인하는 데 도움을 줄 수 있습니까?
import subprocess
subprocess.run('ls -l', shell=True)
답변1
에서 언급했듯이이 답변:
prompt> echo $0 -bash # "-" is the first character. Therefore, this is a login shell.
따라서 첫 번째 예는 로그인 셸을 보여줍니다.
같은 답변에서도 지적했듯이,
man bash
(검색통화)에서 정보를 확인하실 수 있습니다 . 다음은 발췌 내용입니다:로그인 쉘에 대한 인수의 첫 번째 문자는 0이거나
-
옵션으로 시작됩니다--login
.
그리고로부터파이썬 문서:
... Popen은 다음과 같습니다.
Popen(['/bin/sh', '-c', args[0], args[1], ...])
제공된 유일한 옵션은 이므로 -c
로그인 쉘이 아닙니다.