2011. 8. 6. 23:28

■ bash 쉘 사용자 환경

♧ 텍스트 기반의 로그인 환경을 이용하든 터미널 윈도우를 이용하든 관계없이,

쉘이 실행된 후에는 쉘을 시작한 유저를 위한 환경으로 초기화 된다.

 

- bash 쉘은 몇 개의 파일을 통해 사용자 설정을 지원하며,

스타트업(startup) 파일초기화 파일 등 두가지 형태를 가짐.

- bash는 모든 로그인 쉘에 대해서 스타트업 파일을 실행.

이 파일은 사용자의 로그인 전체에 걸쳐 적용되는 설정내용을 정의하고 있다.

- bash는 또한 대화식으로 실행되는 쉘을 위해 초기화 파일들을 실행하는데,

이 파일들은 쉘 스크립트로 실행되지 않는다.

 

▶ 스타트업(startup) 파일

시스템 전역 초기화 파일 : /etc/profile

개인 초기화 파일 : .bash_profile > .bash_login > .profile

(3개 파일이 동시에 존재 할경우 우선순위 별로 하나의 설정 파일만 실행)

※ 다른 리눅스 배포판에서는 시스템 전체에 적용되는 설정 파일을

/etc/profile/etc/profile.d/ 디렉토리에 저장.

 

▶ 초기화 파일

시스템 전역 초기화 파일 : /etc/bash.bashrc

개인 초기화 파일 : ~/.bashrc

※ 다른 리눅스 배포판에서는 시스템 전체에 영향을 주는 초기화 파일로

/etc/bashrc 를 사용

 

▶ 쉘이 종료될 때: ~/.bash_logout

(파일에 기술되어 있는 모든 명령어들을 실행)

 

 

■ bash쉘 history 기능

♧ 히스트로는 과거에 실행했던 명령들을 보거나, 변경하여 재사용할 수 있도록 해주는 기능.

 

$HISTFILE : 히스토리 파일 설정

$ echo $HISTFILE

/home/devanix/.bash_history

bash는 실행될 때 ~/.bash_history 파일에 기록되어 있는 히스토리를 메모리로 읽어 들임.

bash 세션이 유지되는 동안에 실행되는 명령들은 모두 메모리에 있는 히스토리에 추가.

$HISTSIZE : bash 세션동안 히스토리로 저장되는 명령어의 수

$ echo $HISTSIZE

1000

$HISTFILESIZE : 히스토리 파일에 실제적으로 저장되는 명령어의 수

$ echo $HISTFILESIZE

1000

 

▶ history[n] 명령을 실행

$ history 5

975  mkdir extras

976   mv *doc extras/

977   ls -CF

978   vi house.txt

979   history

☞ 숫자와 함께 실행하면 최근 실행했던 명령어를 숫자만큼 보여줌.

 

▶ bash 히스토리로부터 명령어를 호출하여 다시 실행시키는 몇 가지 방법들

$ !!

이전에 실행한 명령을 다시 실행

$ !997

ls -CF

히스토리에 저장된 997번 명령을 실행

$ !997 *doc

히스토리에 저장된 997번 명령에 *doc를 추가.

ls -CF *doc

 

$ !?CF?

ls -CF *doc

이전에 실행된 명령중에 CF문자열을 포함한 명령을 실행

$ !ls

ls -CF *doc

이전에 실행한 ls명령을 실행

$ !ls:s/CF/l

이전에 실행된 ls 명령에서 CF문자열을 l로 대체하여 실행

ls -l *doc

 

 

▶ fc명령어를 이용한 명령어 히스토리 편집

$ fc 978

Edit 978번 명령을 편집한 후에 실행

$ fc

Edit 이전에 실행된 명령을 편집한 후에 실행

$ fc -e /usr/bin/nano 989

989번 명령을 나노 에디터로 편집

(다른 에디터를 사용하고 싶다면 $FCEDIT 환경변수 이용 : 예) $ FCEDIT=vi)

 

▶ 히스토리 문자열을 검색 : <Ctrl + r>

( <Ctrl + r>반복적으로 누르면 히스토리 목록열 역방향으로 검색)

 

 

■ 알리아스(alias) 사용

♧ alias 명령어를사용하여 알리아스를 설정하너가 기존의 알리아스 설정을 볼 수 있다.

일부 알리아스는 앞에서 시스템 또는 사용자 쉘 초기화 파일에 미리 설정 되어 있다.

 

▶ 현재 설정되어 있는 알리아스를 보기

$ alias

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$//'\'')"'

alias egrep='egrep --color=auto'

alias fgrep='fgrep --color=auto'

alias grep='grep --color=auto'

alias l='ls -CF'

alias la='ls -A'

alias ll='ls -alF'

alias ls='ls --color=auto'

 

▶ 현재 bash 세션에서 자신이 원하는 알리아스 정의

$ alias la='ls -la'

(~/.bashrc 파일에 앞의 내용을 추가하면, 새로운 bash 세션이 실행될 때마다 적용)

 

▶ 현재 bash 세션에서 알리아스 제거

$ unalias la

이전에 만들어진 알리아스 la 명령어 제거

$ unalias -a

만들어져 있는 모든 알리아스 해제

Posted by devanix