본문으로 바로가기

.bashrc 환경 설정

category 웹/웹.리눅스.SQL 2009. 4. 29. 16:19
http://www.appleforum.com/os/43792-%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%EC%84%9C%EC%9D%98-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95.html
<-- 원본 자료  수정 추가

우선 bash 명령을 내릴 때 대화식 로그인 셸인지 아닌지에 따라 호출하는 파일이 다릅니다. 

1) 대화식 로그인 셸
/etc/profile(로그인 셸을 위한 시스템 전역 환경 설정 파일) --> 
~/.bash_profile(로그인 셸을 위한 개인 환경 설정 파일) --> 
~/.bash_login(로그인 과정에서 필요한 개인 환경 설정 파일) --> 
~/.profile( ~/.bash_profile와 ~/.bash_login이 없을 경우 호출하는 파일로 옛날 셸을 위한 하위 호환성 설정 파일) 순서로 읽는다.

2) 대화식 비 로그인 셸
~/.bashrc(개인 대화식 셸 설정 파일)

xterm은 대화식 비 로그인 셸(즉, xterm을 띄울 때는 계정과 암호를 묻지 않습니다)로 동작합니다. 따라서, 1)번과 2)번을 조화롭게 묶는 방법을 고안해야 합니다. 흔히 어떤 트릭을 쓰느냐 하면... .bashrc에 필요한 환경 설정을 넣어두고, .bash_profile에 다음과 같은 행을 넣어 둡니다.

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi

그려면 대화식 로그인 셸이나 일반 대화식 셸이나 상관없이 항상 같은 환경 설정을 얻을 수 있습니다.

뱀다리) .profile은 배시 셸 뿐만이 아니라 다른 셸도 읽을 수 있는 환경 설정 파일이므로 배시 셸에서만 사용 가능한 문법을 쓰면 안됩니다.



덧붙임) 결론은 리눅스의 경우 .bashrc 파일 하나만 수정하면 됩니다.

# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
 . /etc/bashrc
fi



##################################################### 여기서 부터 추가
# User specific aliases and functions
#
## aliases 'ls'
alias ls="ls -hF --color"
alias l="ls -l"
alias lh="ls -lh .[a-zA-Z0-9]*"
alias ll="ls -lh | more"
alias lla="ls -lha"
alias lx='ls -lXB'  # 확장자별 정렬
alias lk='ls -lSr'  # 크기별
alias la='ls -Al'  # hidden file view
alias lr='ls -lR'  # 재귀적 ls
alias lt='ls -ltr'  # 날짜별 정렬
alias tree='tree -Cs'  # 'ls'
#
## aliases for Tape-ARchive(tar)
alias tart='tar tvzf'
alias tarc='tar cvzf'
alias tarx='tar xvzf'
#
## aliases to excute specific applications
alias man='man -a'
alias pu='\ps u'
alias ps='\ps -afl'
alias pl='ps -L'
#
## Diagnostics
alias meminfo='echo "/proc/meminfo:"; cat /proc/meminfo; echo "/proc/swaps:"; cat /proc/swaps'
alias cpuinfo='echo "/proc/cpuinfo:"; cat /proc/cpuinfo'

alias ..="cd ..;ls"   # cd 명령후 파일목록 리스트 바로 출력, ccd 참조
alias be="vi ~/.bashrc;source ~/.bashrc"   # .bashrc 수정후 실행
alias cls="clear" 
alias cp="cp -i"
alias du="du -h"
alias df="df -kh"
alias h="history"
alias j='jobs -l'

alias logs="tail -f /var/log/messages /var/log/*log"
alias mkdir="mkdir -p"
alias mlog="tail -100f /var/log/mail.log"
alias mv="mv -i"
alias path="env | grep PATH"
alias ps="ps aux"
#alias rm="rm -i"
alias tc="tar cfvz"
alias tx="tar xfvz"
alias vi="vim"
# 스펠링 오타용
alias xs='cd'
alias vf='cd'
alias moer='more'
alias moew='more'
alias kk='ll'

#-----------------------
# 인사말, motd 등등...
#-----------------------
# 먼저 색깔을 몇 개 정의:
red='\e[0;31m'
RED='\e[1;31m'
blue='\e[0;34m'
BLUE='\e[1;34m'
cyan='\e[0;36m'
CYAN='\e[1;36m'
NC='\e[0m'              # No Color
echo -e "${CYAN}This is BASH ${RED}${BASH_VERSION%.*}${CYAN} - DISPLAY on ${RED}$DISPLAY${NC}\n"
date

if [ -x /usr/games/fortune ]; then
    /usr/games/fortune -s     # 하루를 즐겁게.... :-)
fi

#-----------------------------------
# 파일 & 문자열 관련 함수들:
#-----------------------------------
function ccd() { cd $1 ; ls  ; }                   # 파일 삭제
function del()  # 파일 삭제시 .bak/ 으로 이동
{
    if [ -d ~/.bak ]; then
        mv  -f $1  ~/.bak ;
    else
        mkdir ~/.bak
        mv  -f $1  ~/.bak ;
    fi
}
function ff() { find . -name '*'$1'*' ; }                 # 파일 찾기
function fe() { find . -name '*'$1'*' -exec $2 {} \; ; }  # 파일을 찾아서 $2 의 인자로 실행
function fstr() # 여러 파일중에서 문자열 찾기
{
    if [ "$#" -gt 2 ]; then
        echo "Usage: fstr \"pattern\" [files] "
        return;
    fi
    SMSO=$(tput smso)
    RMSO=$(tput rmso)
    find . -type f -name "${2:-*}" -print | xargs grep -sin "$1" | \
sed "s/$1/$SMSO$1$RMSO/gI"
}
function lowercase()  # 파일이름을 소문자로 변경
{
    for file ; do
        filename=${file##*/}
        case "$filename" in
        */*) dirname==${file%/*} ;;
        *) dirname=.;;
        esac
        nf=$(echo $filename | tr A-Z a-z)
        newname="${dirname}/${nf}"
        if [ "$nf" != "$filename" ]; then
            mv "$file" "$newname"
            echo "lowercase: $file --> $newname"
        else
            echo "lowercase: $file not changed."
        fi
    done
}
function swap()         # 파일이름 두개를 서로 바꿈
{
    local TMPFILE=tmp.$$
    mv $1 $TMPFILE
    mv $2 $1
    mv $TMPFILE $2
}


위 네모상자에 표시된 문서 다운로드(바로 아래)