Bourne 쉘: 로그인이 아닌 대화식에서는 무엇을 합니까?

Bourne 쉘: 로그인이 아닌 대화식에서는 무엇을 합니까?

내가 이렇게 묻는 이유는https://unix.stackexchange.com/a/46856/84749, 제가 ​​시작했을 때 screen제가 하고 있던 일은 "대화형, 비로그인"이었습니다. 실제로 일어나는 일은 BASH가 아닌 Bourne 쉘 시스템에 로그인하고 있는데 로그인하면 ~/.profile제대로 실행되고 별칭이 설정된다는 것입니다. 그러나 실행하면 screen이러한 별칭이 손실되고 실행되지 않는 것 같으며 ~/.profile다른 ~/.login어떤 것도 시도하지 않습니다.

저는 Raspberry Pi 3에서 LibreELEC를 실행하고 있습니다.

답변1

LoginSession은 sh호출될 때 사용자의 로그인 세션을 읽습니다 ~/.profile. 이 작업을 수행한 후 변수가 파일 이름으로 설정되고 파일이 존재하는 경우 ENV쉘은 해당 파일을 사용하여 로그인 세션을 추가로 초기화합니다.

로그인 쉘이 아닌 대화형 쉘은 $ENVif ENV설정만 사용하고 읽기는 사용하지 않습니다 ~/.profile.

비대화형 쉘은 두 파일을 모두 사용해서는 안됩니다.

일반적으로 하나는 ENV다음의 끝에서 내보내집니다 ~/.profile.

ENV="$HOME/.shrc"     # for example
export ENV            # may be done as export ENV="..." too, in most shells.

예를 들어 as 또는 with bash로 호출되면 sh어떻게 될까요 bash --posix?

~/.profile필요에 따라 두 파일( 및 ) 을 모두 사용할 수 있지만 $ENV구성 파일은 필요한 프로세스나 기타 사용자 데몬을 PATH시작하기 위해 한 번만 설정하면 되는 환경 변수를 설정하고 내보내는 곳입니다. fetchmail등을 사용할 것으로 예상되며 해당 파일은 설정 (GnuPG를 사용하는 경우), 별칭 설정(별칭은 하위 쉘에서 상속되지 않기 때문에) 등과 $ENV같은 특정 쉘 세션/TTY에 대한 특정 사항을 설정하는 곳입니다.GPG_TTY

쉘은 기본적으로 및 를 ksh93사용 하지만 이를 특정 방식으로 해석합니다.~/.profile$ENV$ENV만약에 $ENV/./또는 으로 시작하면 ././시스템 전체 구성 파일(예:)이 사용되지 않습니다 /etc/ksh.kshrc.

이 파일 이름을 이 파일 이름으로 설정하지 않거나 명시적으로 또는 에서 가져온 경우가 아니면 이 파일은 ~/.login사용되지 않습니다 .shENV~/.profile$ENV

관련 정보