.bashrc의 목적은 무엇이며 어떻게 작동합니까?

.bashrc의 목적은 무엇이며 어떻게 작동합니까?

이 파일을 찾았 .bashrc는데 그 목적/기능을 알고 싶습니다. 그리고 언제 어떻게 사용하나요?

답변1

.bashrc큰 타격이다쉘 스크립트Bash는 대화형으로 시작될 때마다 실행됩니다. 대화형 쉘 세션을 초기화합니다. 명령 프롬프트에 입력하는 모든 명령을 이 파일에 넣을 수 있습니다.

여기에 명령을 배치하여 특정 환경에서 사용할 셸을 설정하거나 원하는 대로 사용자 정의할 수 있습니다. 공통점 .bashrc별명당신은 항상 사용할 수 있기를 원합니다.

.bashrc실행 대상모든대화형 쉘이 시작됩니다. 당신이 말하는 경우:

$ bash ; bash ; bash

Ctrl-D그런 다음 세 번 치면 .bashrc세 번 실행됩니다. 하지만 이렇게 말한다면:

$ bash -c exit ; bash -c exit ; bash -c exit

그러면 Bash 호출이 비대화형이 되기 .bashrc때문에 전혀 실행되지 않습니다 . -c파일에서 쉘 스크립트를 실행할 때도 마찬가지입니다.

이는 새 로그인 셸이 시작될 때만 실행되는 .bash_profile와 대조됩니다. ( ) 명령 .profile을 한 번 실행할지 또는 대화형 셸이 시작될 때마다 실행할지 여부에 따라 bash -l명령이 .bashrcvs 에 들어갈지 여부를 선택할 수 있습니다..bash_profile

앨리어싱에 대한 반례로 이러한 변경 사항은 일반적으로 조정되지 않기 때문에 조정 .bashrc하고 싶다고 넣는 것을 선호합니다.PATH.bash_profile멱등성:

export PATH="$PATH:/some/addition"

에 넣으면 .bashrc대화형 서브쉘을 시작할 때마다 :/some/addition끝에 붙어서 PATH잘못된 명령을 입력하면 쉘에 추가 작업이 발생합니다.

다음을 수행할 때마다 새로운 대화형 Bash 쉘이 생성됩니다.껍질을 벗다vi예를 들어 로 :sh.

답변2

파일의 목적 .bashrc은 변수, 함수 및 별칭을 설정하고, (PS1) 프롬프트를 정의하고, 새 터미널 창을 열 때마다 사용할 기타 설정을 정의할 수 있는 위치를 제공하는 것입니다.

새 터미널, 창 또는 창이 열릴 때마다 실행하여 작동합니다.

초소형에는 다음이 포함될 수 있습니다.

export CLICOLOR=1
export LANG="en_US.UTF-8"
alias cp="cp -i"
alias ls="ls --color=auto"
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
export EDITOR="vim"

그것이 시작할 때 실제로 아는 전부입니다.


이것은 숙련된 개발자에게 유용한 "과도한" 버전입니다.

숙련된 개발자는 일반적으로 더 많은 것을 가지고 있습니다.
여기서 내 것을 볼 수 있어요(구문 강조 표시가 있는 이미지):

HISTCONTROL=ignoreboth:erasedups HISTSIZE=100000 HISTFILESIZE=200000
ls --color=al > /dev/null 2>&1 && alias ls='ls -F --color=al' || alias ls='ls -G'
md () { [ $# = 1 ] && mkdir -p "$@" && cd "$@" || echo "Error - no directory passed!"; }
git_branch () { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'; }
HOST='\033[02;36m\]\h'; HOST=' '$HOST
TIME='\033[01;31m\]\t \033[01;32m\]'
LOCATION=' \033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"`'
BRANCH=' \033[00;33m\]$(git_branch)\[\033[00m\]\n\$ '
PS1=$TIME$USER$HOST$LOCATION$BRANCH
PS2='\[\033[01;36m\]>'
set -o vi # vi at command line
export EDITOR=vim
test -f ~/.bash_aliases && . $_
test -f ~/.git-completion.bash && . $_
test -s ~/.autojump/etc/profile.d/autojump && . $_
[ ${BASH_VERSINFO[0]} -ge 4 ] && shopt -s autocd
[ -f /etc/bash_completion ] && ! shopt -oq posix && . /etc/bash_completion
[ -z $TMUX ] && export TERM=xterm-256color && exec tmux
export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$home/.rvm/scripts/rvm"

설명하다:

-1. 중복을 무시하고 기본값보다 훨씬 크게 내 기록 파일을 설정합니다.
-2. 색상 옵션은 lsLinux 또는 OSX -3을 사용하는지 여부에 따라 다릅니다
. 기능 " md", -4 명령을 사용하여 디렉토리를 만들고 CD로 이동합니다
. Git 저장소에 있는 경우 현재 Git 분기가 발견되고... -
5. -9. -10 과 같은 멋진 PS1 프롬프트를 정의하세요 <code>20:00:43 durrantm Castle2012 /hom/durrantm/Dropnot/_/rails_apps/linker 마스터 \n $ _</code>
. 향상된 PS2 프롬프트
-11. 명령줄 -12에서
vi를 편집기로 설정합니다 . vi를 기본 편집기
-13으로 설정합니다. 내 .bash_aliases파일 실행(존재하는 경우)
-14. 내 git 탭 완성 스크립트(원격 및 분기용)가 있으면 실행합니다.
-15. 존재하는 경우 자동 점프
-16을 수행합니다. bash 버전 >= 4-17 인 경우
CD 부분을 입력하지 않고 CD'ing을 허용합니다 . Bash 완료 스크립트 실행(있는 경우)
-18. TMUX가 있는 경우
-19를 사용합니다. 내 PATH
-20에 rvm을 추가했습니다. 존재하는 경우 rvm을 사용하십시오.

사용자 정의 없이 모든 Linux 또는 OSX 시스템에서 실행될 수 있도록 이식 가능하게 만들었습니다. 따라서 특정 기능 및 기타 스크립트를 사용하기 전에 많은 실존 테스트가 있을 것입니다.

또한 새 터미널 창을 여는 데 영향을 미치는 문제 없이 새 시스템에서 전체 파일을 즉시 사용하는 것이 더 쉬워집니다.

알림 - .bashrc를 변경하는 경우 재부팅하기 전에 새 터미널 창을 시작하여 제대로 작동하는지 확인하세요(모범 사례 - 변경 후 즉시 수행). .bashrc를 엉망으로 만들고 재부팅하면 로그인하지 못할 수도 있습니다! 개인적으로 저는 이와 같은 긴급 상황(로그인 중단)이 발생하는 경우 해당 사용자로 로그인하고 sudo를 사용하여 다른 로그인을 수정할 수 있도록 개인용 컴퓨터에 두 번째 "관리자" 사용자도 만듭니다.

답변3

구성 파일 입니다 bash.

대화형(비로그인) 셸을 사용하고 다음 파일에서 구성을 읽습니다.

  • $HOME/.bashrc

로그인 셸의 경우 다음 파일에서 구성을 읽습니다.

  • /etc/profile(항상 출처가 있습니다)
  • $HOME/.bash_profile(나머지 파일은 하나가 발견될 때까지 순서대로 검사된 다음 더 이상 읽히지 않습니다)
  • $HOME/.bash_login
  • $HOME/.profile

아래 이미지는 로드 방법/시기를 간략하게 보여줍니다.

나는 echo.bashrc.bash_profile

대화형 셸 및 로그인 셸

man bash자세한 내용은 참조하세요

관련 정보