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 명령을 내릴 때 대화식 로그인 셸인지 아닌지에 따라 호출하는 파일이 다릅니다.
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 파일 하나만 수정하면 됩니다.
2) 대화식 비 로그인 셸
~/.bashrc(개인 대화식 셸 설정 파일)
xterm은 대화식 비 로그인 셸(즉, xterm을 띄울 때는 계정과 암호를 묻지 않습니다)로 동작합니다. 따라서, 1)번과 2)번을 조화롭게 묶는 방법을 고안해야 합니다. 흔히 어떤 트릭을 쓰느냐 하면... .bashrc에 필요한 환경 설정을 넣어두고, .bash_profile에 다음과 같은 행을 넣어 둡니다.
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
그려면 대화식 로그인 셸이나 일반 대화식 셸이나 상관없이 항상 같은 환경 설정을 얻을 수 있습니다.
뱀다리) .profile은 배시 셸 뿐만이 아니라 다른 셸도 읽을 수 있는 환경 설정 파일이므로 배시 셸에서만 사용 가능한 문법을 쓰면 안됩니다.
덧붙임) 결론은 리눅스의 경우 .bashrc 파일 하나만 수정하면 됩니다.
# .bashrc
alias ..="cd ..;ls" # cd 명령후 파일목록 리스트 바로 출력, ccd 참조
alias be="vi ~/.bashrc;source ~/.bashrc" # .bashrc 수정후 실행
alias cls="clear"
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"
#-----------------------
# 인사말, motd 등등...
#-----------------------
if [ -x /usr/games/fortune ]; then
/usr/games/fortune -s # 하루를 즐겁게.... :-)
fi
#-----------------------------------
# 파일 & 문자열 관련 함수들:
#-----------------------------------
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
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 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'
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 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'
## 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'
## 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 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'
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
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
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
}
{
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 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"
}
{
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
}
{
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
}
{
local TMPFILE=tmp.$$
mv $1 $TMPFILE
mv $2 $1
mv $TMPFILE $2
}