왜 .profile (.bashrc 아님)이 ~ / bin을 경로에 추가합니까?


9

이후로는 .bashrc(의미에서 더 "일반적인"입니다 .profile소스가) 왜 "를 포함 ~/bin경로에"절차에 있지 .bashrc? 사용자가 비 로그인 쉘에서 원하지 않는 이유는 무엇입니까? (특히 오늘날 비 로그인 쉘이 더 일반적입니다 *)

수동으로 변경을 수행 할 수 있지만 이유가 있는지 알고 싶습니다.

* 증명할 수는 없지만 그럴 것 같습니다.

답변:


13

~/.bashrc/etc/bash.bashrc상호 작용 할 때마다 실행되는 bash쉘이 시작됩니다.

대조적으로, ~/.profile그리고 /etc/profile어떤 때마다 실행되는 로그인 쉘이 시작됩니다. 따라서 bash쉘일 필요는 없지만 로그인 쉘 이어야합니다 (많은 bash쉘 인스턴스는 로그인 쉘 이 아닙니다 ).

  • bash쉘은 그것을 제공하는 쉘 프로그램 인 셸 bash과 같은, 오히려 다른 프로그램보다 dash.
  • 로그인 쉘은 로그인에 대한 사용자 인터페이스 (그래픽 또는 명령 행)를 제공하기 위해 로그인 한 결과 자동으로 시작되는 쉘입니다. 로그인 쉘이 종료되면 로그인이 종료됩니다.

따라서,에 항목을 추가 표창 넣어 PATHA의 bashrc파일 것을 :

  1. 쉘이 아닌 경우에는 아무 것도하지 마십시오bash . 종종 그렇습니다. 예를 들어, PATH그래픽 로그인 세션에있을 때는 수정되지 않습니다. 기억 PATH단지 명령 줄 프로그램에서 사용되지 않습니다.

  2. 중첩 된 bash쉘이 있는 경우 반복해서 추가하십시오 . 따라서 쉘 내에서 쉘을 시작하면 (다양한 이유로 매우 흔함) 여러 개의 ~/bin항목이에 쌓 PATH입니다. 이로 인해 PATH환경 변수를 읽기가 어렵고 때로는 성능이 저하됩니다.

이들은 바람직하지 않습니다. 따라서 이것을 파일 에 넣는 것은 잘못입니다bashrc . 정말에 속합니다 ~/.profile. ~/.profile이다 적당한 장소 에가 :

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

비 로그인 쉘은 로그인 쉘 (또는 로그인 쉘과 같이 작동하는 것)을 부모 PATH로하고이 로그인 쉘에서를 포함한 대부분의 환경 변수를 상속 합니다. 따라서 경로 수정 명령을 ~/.profile넣으려면 로그 아웃했다가 다시 로그인해야 효과적이지만 비 로그인 쉘의 환경 (쉘이 아닌 프로그램의 환경)에도 영향을 미칩니다. "환경"이라고하는 자체 환경 변수 세트는 상위 프로세스에서 상속됩니다.


이해 했어요. 그러나이 결정은 여전히 ​​나에게 이해가되지 않습니다. 터미널을 지금 열면 .bashrc 만로드되면 개인 저장소를 볼 수 없습니다.
borges

@borges 기본 구성이 제대로 작동하지 않으면 자유롭게 변경할 수 있습니다. (결국 귀하의 컴퓨터이거나 적어도 귀하의 계정입니다.) 그러나 이것은 일회성으로 들립니다. 즉, bin로그온 할 때 개인 디렉토리가 존재하지 않았으며이 로그인 세션 중에 작성했음을 들었습니다. 로그 아웃했다가 다시 로그인하면에 있습니다 PATH. 개인 bin디렉토리 작성 은 한 번만 수행하면되므로 한 번 불편합니다.
Eliah Kagan

3

전통적으로 환경 변수는 /etc/profile또는 로만 들어가기 때문 .profile입니다. 이 bashrc파일은 별명, 프롬프트 설정, 쉘 옵션 등과 같은 것 (즉, 쉘과 직접 관련된 것)을위한 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.