반응형
환경설정에서 중요한 파일, .bashrc
~/.bashrc
파일의 내용을 자세히 설명드리겠습니다. 이 파일은 비로그인(non-login) 쉘에서 Bash가 실행될 때 로드되는 설정 파일로, 사용자 환경 설정 및 명령어 자동화를 위한 다양한 구성이 포함되어 있습니다.
1. 주석 (1-3줄)
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples
- 이 파일은 비로그인 쉘에서 Bash가 실행될 때 호출됩니다. 예시로
/usr/share/doc/bash/examples/startup-files
경로에서 Bash 설정 파일의 예시를 참조할 수 있습니다.
2. 비대화형 쉘인지 확인 (5-9줄)
# If not running interactively, don't do anything
case $- in
*i*) ;;
*) return;;
esac
$-
변수는 쉘의 상태 정보를 담고 있으며,*i*
가 포함되어 있으면 대화형(interactive) 쉘이라는 의미입니다. 이 코드에서는 대화형이 아닌 경우(*i*
가 없을 때) 바로return
명령으로.bashrc
의 실행을 중단합니다. 즉, 대화형 쉘이 아닐 때는 이 파일이 실행되지 않습니다.
3. 명령어 히스토리 설정 (11-20줄)
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
- HISTCONTROL: 중복된 명령어나 공백으로 시작하는 명령어는 히스토리(명령어 이력)에 기록되지 않도록 설정됩니다.
ignoreboth
는ignoredups
(중복 명령어 무시)와ignorespace
(공백으로 시작하는 명령어 무시)를 함께 사용한 설정입니다. - shopt -s histappend: 히스토리 파일을 덮어쓰지 않고 새 명령어를 추가할 때 기존 내용을 유지하도록 설정합니다.
- HISTSIZE와 HISTFILESIZE: 각각 메모리와 파일에 저장할 히스토리 명령어의 개수를 설정합니다.
HISTSIZE=1000
은 1000개의 명령어를 메모리에 저장하며,HISTFILESIZE=2000
은 최대 2000개의 명령어를 파일에 저장합니다.
4. 윈도우 크기 자동 조정 (22-23줄)
# check the window size after each command and, if necessary,
# update the values of LINES and COLUMNS.
shopt -s checkwinsize
- shopt -s checkwinsize: 각 명령어가 실행된 후 터미널 창의 크기를 확인하고, 필요하면
LINES
와COLUMNS
값을 자동으로 업데이트합니다. 이는 터미널 창 크기 변경에 따른 출력 오류를 방지합니다.
5. globstar 설정 (26-28줄)
# If set, the pattern "**" used in a pathname expansion context will
# match all files and zero or more directories and subdirectories.
#shopt -s globstar
- 이 설정은 주석 처리되어 있지만 활성화하면
**
패턴을 사용해 경로 탐색 시 모든 파일과 하위 디렉터리까지 매칭할 수 있게 합니다.
6. less
명령어 관련 설정 (31-32줄)
# make less more friendly for non-text input files, see lesspipe(1)
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
- lesspipe: 이 명령은
less
명령어가 비텍스트 파일을 처리할 때 더 유연하게 작동하도록 돕는 스크립트를 실행하는 설정입니다./usr/bin/lesspipe
파일이 존재하고 실행 가능한 경우, 해당 스크립트를eval
명령으로 호출하여 설정을 적용합니다.
7. chroot 환경 설정 (35-37줄)
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
- chroot 환경에서 작업할 때 사용하는 변수
debian_chroot
를 설정합니다./etc/debian_chroot
파일이 존재하고 읽을 수 있을 때, 그 내용을 변수에 저장합니다. 이 설정은 프롬프트에서 chroot 환경을 식별하는 데 사용됩니다.
8. 컬러 프롬프트 설정 (40-61줄)
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
#force_color_prompt=yes
- 컬러 프롬프트: 프롬프트에 색상을 사용할지 여부를 설정하는 부분입니다.
TERM
변수에xterm-color
또는*-256color
가 포함되어 있으면 컬러 프롬프트를 활성화합니다.
9. 프롬프트 설정 (62-73줄)
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
- PS1: 프롬프트를 설정하는 부분으로, 컬러 프롬프트가 활성화된 경우와 그렇지 않은 경우에 따라 다른 프롬프트를 설정합니다.
\u
: 현재 사용자의 이름\h
: 호스트 이름\w
: 현재 디렉터리
10. xterm 타이틀 설정 (75-81줄)
# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
- xterm 타이틀: xterm이나 rxvt 같은 터미널에서 실행 중이라면, 터미널의 타이틀을
사용자@호스트:디렉터리
형식으로 설정합니다.
11. ls
명령어 컬러 및 별칭 설정 (83-91줄)
# enable color support of ls and also add handy aliases
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
alias python='python3'
fi
- dircolors:
ls
명령어에 컬러 출력을 적용합니다.~/.dircolors
파일이 존재하고 읽을 수 있으면 해당 설정을 적용하고, 그렇지 않으면 기본 설정을 사용합니다. - 별칭(alias): 여러 명령어에 대해 컬러 출력을 적용하는 별칭을 정의합니다. 예를 들어
grep
명령어는grep --color=auto
로 설정됩니다.
12. 추가 ls
별칭 (94-98줄)
# some more ls aliases
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
- ll, la, l: 각각
ls
명령어의 자주 사용하는 옵션들을 결합한 별칭을 설정합니다.ll
은 모든 파일을 자세히 나열하고(ls -alF
),la
는 숨김 파일을 포함하여 목록을 출력하며(ls -A
),l
은 기본적인 형식으로 파일 목록을 나열합니다(ls -CF
).
13. 알림 별칭 (101-103줄)
# Add an "alert" alias for long running commands. Use like so:
# sleep 10; alert
alias alert='notify-send --urgency=low -i
"$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
- alert: 긴 시간이 소요되는 명령어가 완료되었을 때 알림을 보내는 별칭입니다. 예를 들어,
sleep 10; alert
와 같이 사용할 수 있습니다.
14. 별칭 파일 로드 (108-110줄)
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
- 별칭 파일 로드: 별칭 설정을 외부 파일
~/.bash_aliases
에 저장했다면, 이 파일을 로드하여 적용합니다.
15. Bash 완성 기능 (112-118줄)
# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
- 프로그래머블 완성 기능: 명령어 자동 완성 기능을 활성화하는 부분입니다.
/usr/share/bash-completion/bash_completion
또는/etc/bash_completion
파일이 존재하면 로드하여 적용합니다.
16. Conda 초기화 (121-130줄)
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/easyfly/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
eval "$__conda_setup"
else
if [ -f "/home/easyfly/anaconda3/etc/profile.d/conda.sh" ]; then
. "/home/easyfly/anaconda3/etc/profile.d/conda.sh"
else
export PATH="/home/easyfly/anaconda3/bin:$PATH"
fi
fi
unset __conda_setup
# <<< conda initialize <<<
- Conda 초기화: 이 블록은
conda init
명령어에 의해 관리되며, Conda 환경을 초기화하는 설정입니다. Conda 명령어를 Bash에서 사용할 수 있도록 설정하고, 문제가 발생할 경우에는 Conda의 경로를PATH
에 수동으로 추가합니다.
정리
이 .bashrc
파일은 사용자 쉘 환경을 최적화하고 다양한 별칭과 자동화된 명령어 설정을 통해 작업 효율성을 높이는 데 중점을 둡니다. 히스토리 관리, 프롬프트 설정, 터미널 컬러 지원, 그리고 Conda 환경 초기화 등 다양한 설정들이 포함되어 있으며, 이는 리눅스에서 사용자의 작업 환경을 더 편리하게 관리할 수 있도록 돕는 역할을 합니다.
반응형
'Linuxpia > 데스크톱 리눅스' 카테고리의 다른 글
리눅스의 대표 데스크톱, GNOME, KDE Plasma, Xfce (57) | 2024.10.09 |
---|---|
리눅스에서 데스크톱(Desktop)이란 (63) | 2024.10.08 |
리눅스에서 패스(PATH) 설정 (20) | 2024.09.28 |
[리눅스 데스크톱] 오페라 브라우저 설치 (18) | 2024.09.27 |
[시스템] 업데이트 중에 발생한 문제 해결 (21) | 2024.09.20 |