로그인 또는 비 로그인 여부에 관계없이 항상 대화식 모드로 제공되는 Bash 파일이 있습니까?


10

내가 아는 한, 대화식 쉘은 로그인 여부에 따라 시작 파일이 다를 수 있습니다.

  • 대화 형 + 로그인 셸 → /etc/profile~/.bash_profile경우 ~/.bash_login, 및~/.profile
  • 만약 → 대화 형 + 비 - 로그인 쉘 /etc/bash.bashrc다음~/.bashrc

로그인 쉘인지 여부에 관계없이 대화식 쉘을 사용할 때마다 일부 변수를 설정하고 싶습니다.



1
@strugee 아니오,이 질문은 환경 변수에 관한 것이 아닙니다.
Gilles 'SO- 악의를 멈춰라'

@Gilles 네, 그러나 귀하의 답변은 똑같이 적용됩니다.
strugee

1
@strugee 그것은 즉각적인 질문을 넘어 주변 주제를 다루었 기 때문입니다. 하나의 답변에서 한 단락은 중복되지 않습니다. 하나의 답변이 두 번째 질문에 대답하기에 충분한 자료를 포함하고있는 경우가 아니라 실질적으로 동일한 답변이있는 경우에만 질문이 중복됩니다.
Gilles 'SO- 악마 그만해'

답변:


10

아닙니다. 예, 이것은 디자인 결함입니다.

다음 내용을 사용하십시오 ~/.bash_profile.

if [ -e ~/.profile ]; then . ~/.profile; fi
if [[ -e ~/.bashrc && $- = *i* ]]; then . ~/.bashrc; fi

그 배쉬가 더 괴상 특질을 가지고주의 :이 아닌 대화 형 로그인 쉘이고 부모 프로세스 인 경우 rshd또는 sshd, bash는 소스 ~/.bashrc(하지만 ~/.bash_profile~/.profile). 따라서 이것을 맨 위에 놓을 수도 있습니다 .bashrc.

if [[ $- != *i* ]]; then return; fi

참조 의 .bashrc와 .bash_profile에 차이로그인 쉘 및 비 로그인 쉘의 차이를?


이러한 문제는 보안상의 이유입니다 (보안에 민감한 설정에서 실행할 때 예기치 않은 파일을로드하지 마십시오).
vonbrand

2
@vonbrand Er, 뭐? 아니요, 이러한 단점은 보안과 전혀 관련이 없습니다. "예기치 않은 파일"은 포함되지 않으며 ( .bashrc대화식이 아닌 설정에서 로드 하는 것이 실제로 예상치 못한 것으로 간주 될 수 있음을 제외하고 ) 보안에 민감한 컨텍스트를 검사합니다.
Gilles 'SO- 악의를 그만두십시오'

이것이 루프를 방지하는 방법입니까?
Braiam

1
@Braiam 무슨 루프?
Gilles 'SO- 악의를 그만두십시오'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.