답변:
.bashrc
하고 .bash_profile
있습니다 NOT 스크립트. 그것들은 bash
다음 두 가지 방법 중 하나로 실행될 때마다 소싱되는 구성 파일입니다 .
bash 매뉴얼 페이지 의 INVOCATION 섹션은 관련이 있습니다.
로그인 쉘은 하나의 그 첫 번째 문자 인수 0의이다
-
, 또는 시작 하나의--login
옵션을 선택합니다.대화식 쉘은 하나의 비 옵션 인수없이 상기없이 시작되고
-c
, 그 표준 입력 및 에러에 의해 결정되는 양 (단자에 접속되는 옵션isatty(3))
, 또는 하나가 시작-i
옵션. PS1 설정되어$-
포함되어i
있는 경우bash
대화식 쉘 스크립트를 허용 또는이 상태를 테스트하기위한 시작 파일.다음 단락
bash
에서는 시작 파일을 실행 하는 방법에 대해 설명 합니다. 파일이 존재하지만 읽을 수없는 경우 bash는 오류를보고합니다. 틸드 는 EXPANSION 섹션의 틸드 확장 아래에 설명 된대로 파일 이름으로 확장 됩니다 .bash가 대화식 로그인 쉘 또는
--login
옵션이 있는 비 대화식 쉘로 호출 될 때/etc/profile
파일이 존재하는 경우 먼저 파일에서 명령을 읽고 실행 합니다. 해당 파일을 읽은 후, 그것은을 찾습니다~/.bash_profile
,~/.bash_login
그리고~/.profile
, 순서대로, 그리고 읽고 존재하고 읽을 수있는 첫 번째에서 실행하는 명령을.--noprofile
쉘이 동작을 억제하기 시작할 때 옵션을 사용할 수있다.로그인 쉘이 종료되면 bash는 파일에서 명령을 읽고 실행합니다 (있는
~/.bash_logout
경우).때 대화 형 로그인 쉘이 시작되지 않은 쉘, bash는 읽기 및 실행하는 명령에서
~/.bashrc
해당 파일이 존재하는 경우. 이--norc
옵션 을 사용하여 금지 할 수 있습니다 . 이--rcfile file
옵션은 bash가 파일 대신 명령을 읽고 실행하도록합니다~/.bashrc
.
당신은이 명령 줄 스위치를 통해로드되는시기를 제어, 수 --norc
및 --noprofile
. --rcfile
스위치 를 사용하여로드 된 위치를 무시할 수도 있습니다 .
다른 사람들이 언급했듯이 source <file>
명령 사용 또는 명령 사용을 통해 이러한 파일을로드하는 방법을 모방 할 수 있습니다 . <file>
.
이 기능을 다음과 같이 생각하는 것이 가장 좋습니다.
이 주제는 가끔씩 등장하는 것처럼 보이므로 여기에는 다양한 호출 방법 bash
및 결과에 대한 약간의 설명이 있습니다. 참고 : "sourced $ HOME / .bashrc"및 "sourced"메시지를 추가했습니다. $ HOME / .bash_profile "을 해당 파일에 추가하십시오.
기본 통화
bash -i
$ bash -i
sourced /home/saml/.bashrc
bash -l
$ bash -l
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash -il-또는-bash -li
$ bash -il
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash -c "..cmd .."
$ bash -c 'echo hi'
hi
참고 : 공지 사항이 있다는 -c
스위치 중 하나를 파일을 소스하지 않았다!
구성 파일을 읽을 수 없도록 설정
bash --norc
$ bash --norc
bash-4.1$
bash --noprofile
$ bash --noprofile
sourced /home/saml/.bashrc
bash --norc -i
$ bash --norc -i
bash-4.1$
bash --norc -l
$ bash --norc -l
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash --noprofile -i
$ bash --noprofile -i
sourced /home/saml/.bashrc
bash --noprofile -l
$ bash --noprofile -l
bash-4.1$
bash --norc -i-또는-bash --norc -l
$ bash --norc -c 'echo hi'
hi
bash를 호출하는 더 난해한 방법
bash --rcfile $ HOME / .bashrc
$ bash -rcfile ~/.bashrc
sourced /home/saml/.bashrc
bash --norc --rcfile $ HOME / .bashrc
$ bash --norc -rcfile ~/.bashrc
bash-4.1$
이것들은 실패했습니다
bash -i -rcfile ~ / .bashrc
$ bash -i -rcfile ~/.bashrc
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash: /home/saml/.bashrc: restricted: cannot specify `/' in command names
bash -i -rcfile .bashrc
$ bash -i -rcfile .bashrc
sourced /home/saml/.bashrc
sourced /home/saml/.bash_profile
bash: .bashrc: command not found
아마도 더 많은 것이 있지만 당신은 요점을 얻습니다.
마지막으로이 주제에 관심이 많고 더 많은 내용을 읽고 탐구하고 싶다면 Bash Beginners Guide, 특히 섹션 1.2를 살펴 보는 것이 좋습니다 . Bourne의 장점은 다시 소리 쳤다 . "1.2.2.1. 호출" 에서 "1.2.2.3.3. 대화식 쉘 동작" 까지 의 여러 하위 섹션에서는 호출 할 수있는 다양한 방법 간의 낮은 수준의 차이를 설명합니다 bash
.
.bash_profile
소스를 포함하는 줄을 포함하는 것일 수 있습니다 .bashrc
. 그러나 나는 매우 전형적인 설정이라고 생각합니다.
.bashrc
및 .bash_profile
스크립트 없습니다 . IMHO는 bash 초기화 중에 또는 명시 적으로 수정 사항을 적용해야 할 때 명시 적으로 제공되는 특정 목적의 스크립트입니다. 그들은 구성 파일에서 예상대로 bash 환경 (변수, 함수, 별명 ...)을 구성하지 않습니다. 일반적인 스크립트에서와 같이 모든 작업을 수행 할 수 있습니다. 예를 들어 백그라운드 작업, 로그 레코드 쓰기, 일부 프로그램 초기화 등과 같은 다양한 작업을 시작할 수 있습니다. 어쨌든 자세한 요약에 감사드립니다!
다른 답글 외에도 원하는 경우 이러한 구성 파일의 시작 부분에 shebang을 넣을 수 없습니다.
Shebang이 일반적인 주석처럼 처리되므로 쉘을 소싱하는 데 아무런 영향을 미치지 않습니다.
구문 강조를 사용하여 파일에서 어떤 프로그래밍 언어가 사용되는지 파악하는 편집기에 도움이 될 수 있습니다.
vim
그래도 일부 편집자 는 후자에 대한 모델과 같은 대체 방법을 제공합니다. 당신은 항상 끝에 모드 라인을 넣을 수 있습니다 즉 ~/.bashrc
및 ~/.bash_profile
과 같이 :
...
<code in ~/.bashrc>
...
# vim: ft=sh :
.bash_profile
ShellCheck의 권장 사항에 대한 시작 부분에 shebang을 추가하는 것과 관련하여 내가 찾고있는 것입니다 .