답변:
.bashrc
Bash가 대화식으로 시작될 때마다 실행 되는 쉘 스크립트 입니다. 대화식 쉘 세션을 초기화합니다. 명령 프롬프트에서 입력 할 수있는 명령을 해당 파일에 넣을 수 있습니다.
특정 환경에서 사용하기 위해 쉘을 설정하거나 원하는대로 항목을 사용자 정의하는 명령을 여기에 넣습니다. 일반적으로 사용하는 것은 항상 사용할 수 .bashrc
있는 별칭 입니다.
.bashrc
에서 실행되는 모든 대화 형 쉘 출시. 당신이 말하는 경우:
$ bash ; bash ; bash
Ctrl-D세 번 때리고 세 번 .bashrc
뛸 겁니다 그러나 이것을 대신하면 :
$ bash -c exit ; bash -c exit ; bash -c exit
그때 .bashrc
이후로 전혀 실행되지 않습니다 -c
배쉬 호출이 아닌 상호 작용합니다. 파일에서 쉘 스크립트를 실행할 때도 마찬가지입니다.
대비 .bash_profile
및 .profile
새 로그인 셸 시작시에만 실행됩니다. ( bash -l
) 명령 을 한 번 실행할지 또는 모든 대화식 쉘 시작마다 실행할지에 따라 명령을 .bashrc
넣을지 .bash_profile
여부를 선택합니다.
내가 선호하는 별칭에 대한 반례로서 , 이러한 변경은 일반적으로 dem 등성이 아니기 때문에 대신 조정 .bashrc
을 원합니다 .PATH
.bash_profile
export PATH="$PATH:/some/addition"
당신이 있음을 넣으면 .bashrc
대신 때마다 대화 형 서브 쉘을 출시 :/some/addition
의 말에 압정으로 고정 얻을 것이다 PATH
당신이 명령을 잘못 입력하면 쉘에 대한 추가 작업을 생성, 다시.
당신이 때마다 새로운 대화 형 bash 쉘을 얻을 에서 쉘vi
과 함께 :sh
예를 들어,.
.bashrc
. 때때로 예기치 않은 동작 이 발생할 수 있습니다 . 일반적인 해결 방법은 소스입니다 .bashrc
에서 .profile
나 .bash_profile
대신.
.bashrc
다른 쉘에서 사용하기위한 것이 아니므로 다른 쉘에서 사용하지 않는 것이 좋습니다 (다른 쉘이 아닌 다른 쉘에서 .profile
사용 가능 bash
).
source ~/.bashrc
또는 . ~/.bashrc
또는 [[ -f ~/.bashrc ]] && source. ~/.bashrc
또는 [ -f ~/.bashrc ] && source ~/.bashrc
작동하지 않습니다?
.bashrc
실제로 그것이 출처 임을 깨달았습니다 ( superuser.com/a/183980/128768 의 권장 명령 사용 ). 내가 직면 문제는 실제의하지 소싱 https://github.com/junegunn/fzf
내부에이 명령을 통해 .bashrc
: source ~/.fzf.bash
. 새 터미널을 시작하면 Ctrl
+ R
가 표시 `__fzf_history__`bash: fzf: command not found
됩니다. 수동으로 소싱 .bashrc
하고 동일한 바로 가기 키가 예상대로 fzf를 시작합니다. 소음에 대한 사과드립니다.
.bashrc
파일 의 목적은 변수, 함수 및 별명을 설정하고 (PS1) 프롬프트를 정의하며 새 터미널 창을 열 때마다 사용할 기타 설정을 정의 할 수있는 장소를 제공하는 것입니다.
새 터미널, 창 또는 창을 열 때마다 실행되어 작동합니다.
여기에서 내 구문을 볼 수 있습니다 (구문 강조 표시 사용) .
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. ls
Linux 또는 OSX
-3을 사용 중인지 에 따라 색상 옵션 . md
하나의 명령
-4 를 사용하여 디렉토리로 만들고 cd하는 기능 " " . 자식 저장소에있는 경우 현재 자식 분기를 찾고
-5. -9.
-10 과 같이 멋진 PS1 프롬프트를 정의하십시오 . PS2 프롬프트 개선
-11. 명령 행
-12 에서 vi를 편집기로 설정하십시오 . vi를 기본 편집기
-13 으로 설정하십시오 . 내 .bash_aliases
파일이 있으면
-14를 실행 하십시오 . 내 자식 탭 완성 스크립트 (원격 및 분기 용)가 있으면 실행하십시오.
-15. 존재하는 경우 자동 점프를 실행하십시오
-16. bash version> = 4 인 경우 cd 부분을 입력하지 않고 cd'ing 허용
-17. bash 완료 스크립트가 있으면
-18을 실행하십시오. TMUX가 있으면
-19를 사용하십시오 . 내 PATH
-20에 rvm을 추가하십시오 . 존재하는 경우 rvm을 사용하십시오.
필자는이 이식성을 사용자 정의없이 모든 Linux 또는 OSX 시스템에서 작동하도록 만들었습니다. 따라서 특정 기능과 다른 스크립트를 사용하기 전에 존재 여부에 대한 여러 테스트가 수행됩니다.
또한 새 터미널 창을 여는 데 영향을주는 문제없이 새 컴퓨터에서 즉시 전체 파일을보다 쉽게 사용할 수 있습니다.
그것은이다 bash
config 파일.
대화 형 (비 로그인) 쉘인 경우 다음 파일에서 구성을 읽습니다.
$HOME/.bashrc
로그인 쉘의 경우 다음 파일에서 구성을 읽습니다.
/etc/profile
(항상 출처)$HOME/.bash_profile
(이 파일들 중 나머지 파일들은 하나가 발견 될 때까지 순서대로 확인되고, 다른 파일들은 읽지 않습니다)$HOME/.bash_login
$HOME/.profile
로드 방법 / 시간에 대한 간단한 그림은 아래 이미지에 있습니다.
내가 추가 echo
내 .bashrc
와.bash_profile
자세한 내용 man bash
은 참조하십시오
.bashrc
사이의 차이를 구별 .bashrc
과 .bash_profile
답변의 내용을 다루고있다. 낙심하지 말고 정직한 노력을 기울이지 만 다른 답변으로는 다루지 않는 내용으로 질문에 대답하는 데 집중하십시오.