본문 바로가기

CentOS/Study

[Study36]Linux Bash 셸 기술로 생산성 향상 - 환경파일(Environment File)

반응형

사용자 환경 파일(Bash Initialization)

사용자의 Bash 초기화 파일은 셸이 시작될 때 실행되는 스크립트입니다. 이 파일은 사용자가 로그인할 때마다 실행되며, 사용자가 수행하는 작업에 대한 환경을 설정합니다. 초기화 파일에는 다양한 환경 변수 및 함수를 정의할 수 있으며, 사용자의 편의성을 높이기 위해 에일리어스(alias)를 설정할 수도 있습니다. 또한 초기화 파일에는 셸 프롬프트와 관련된 설정도 포함됩니다. 이러한 설정을 사용하면 사용자는 콘솔 창에서 불필요한 정보를 제거하거나, 프롬프트의 색상과 스타일을 변경할 수 있습니다.

 

[1] 환경 파일이 읽혀지는 순서

[1-1] 로그인시에 읽혀지는 환경 파일

로그인할 때 환경 설정 파일이 읽혀집니다. 환경 파일은 사용자가 로그인 할 때 필요한 설정 정보를 포함합니다. 이러한 환경 파일은 다음과 같은 파일이 있습니다.

■ /etc/profile
	■ /etc/profile.d/*.sh

■ ~/.bash_profile (~/.bash_profile -> 파일이 없으면 -> ~/.bash_login -> 파일이 없으면 -> ~/.profile)
	■ ~/.bashrc
		■ /etc/bashrc

위의 환경 파일을 통해 로그인할 때 필요한 설정 정보를 적용할 수 있습니다.

 

[1-2] 쉘이 실행될 때 마다 읽혀지는 환경 파일

쉘이 실행될 때마다 환경 설정 파일이 읽혀집니다. 이러한 환경 파일에는 사용자가 쉘을 실행할 때 필요한 설정 정보가 포함됩니다. 다음과 같은 환경 파일이 있습니다.

■ ~/.bashrc
	■ /etc/bashrc
		■ /etc/profile.d/*.sh

위의 환경 파일을 통해 사용자는 쉘을 실행할 때 필요한 설정 정보를 적용할 수 있습니다.

 

[1-3] 로그아웃 할 때 마다 읽혀지는 환경 파일

로그아웃할 때 읽혀지는 환경 파일에는 다음과 같은 파일이 있습니다.

■ ~/.bash_logout

로그아웃할 때는 해당 사용자의 쉘 환경에 대한 정보를 정리하는 것이 중요합니다. 위의 환경 파일을 통해 로그아웃할 때 필요한 정보를 정리할 수 있습니다.

이렇게해서, 사용자가 로그인하거나 로그아웃할 때 쉘 환경 파일이 언제 읽히는지에 대해 알아보았습니다. 쉘 환경 파일은 사용자가 쉘을 실행할 때 필요한 설정 정보를 제공하므로, 이를 적절히 활용하여 사용자의 작업을 보다 효율적으로 할 수 있습니다.

 

[2] 사용자 환경 초기값 설정

환경 초기값 설정은 사용자가 적합한 환경을 쉽게 구성할 수 있도록 하는 중요한 단계입니다. 사용자는 기본적으로 두 가지 방법으로 환경 초기값 설정을 수행할 수 있습니다.

[2-1] 관리자가 일반사용자의 환경을 설정 시켜 주는 경우

관리자는 일반 사용자의 환경을 관리하며, 이를 위해 다음과 같은 파일들을 사용합니다.

■ /etc/profile : 로그인 할 때만 읽혀짐
■ /etc/bashrc  : 쉘이 실행 될때 마다 읽혀짐
■ /etc/profile.d/*.sh : 쉘이 실행 될때 마다 읽혀짐

이러한 파일들을 통해 관리자는 사용자의 환경을 쉽게 설정할 수 있습니다. 그러나, 사용자는 이러한 환경 설정이 자신에게 맞지 않을 수 있습니다. 따라서, 사용자는 더욱 편리한 시스템 사용을 위해 자신만의 환경 설정을 하는 것이 좋습니다.

 

[2-2] 일반 사용자가 자신의 환경을 설정 하는 경우

사용자는 다음과 같은 파일들을 수정하여 자신의 환경을 설정할 수 있습니다.

■ ~/.bash_profile : 로그인 할 때만 읽혀짐
■ ~/.bashrc       : 쉘이 실행 될때 마다 읽혀짐

이러한 파일들을 수정함으로써 사용자는 각자의 취향에 맞게 환경을 설정할 수 있습니다. 예를 들어, 사용자는 터미널에서 자주 사용하는 명령어를 쉽게 실행하기 위해 alias를 정의할 수 있습니다. 또한, 색상 설정, 프롬프트 설정 등을 통해 사용자의 눈에 편안한 환경을 구성할 수 있습니다.

환경 초기값 설정은 시스템 사용의 편의성을 높이는 중요한 단계입니다. 사용자는 자신의 환경 설정을 통해 더욱 편리하고 효율적인 시스템 사용을 할 수 있습니다.

 

[3] 환경파일 분석

[3-1] /etc/profie 파일

/etc/profile 파일은 로그인 설정을 위한 시스템 전역 환경 변수 및 시작 프로그램을 포함하고 있습니다. 즉, 이 파일은 시스템 전체에서 사용되는 환경 변수를 설정하고, 로그인 시 자동으로 실행되는 프로그램을 정의합니다. 이 파일에는 pathmunge() 함수가 정의되어 있습니다. 이 함수는 PATH 환경 변수에 디렉토리 경로를 추가할 때 사용됩니다.

pathmunge () { # PATH 변수 내용 순서를 설정
        if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
           if [ "$2" = "after" ] ; then
              PATH=$PATH:$1
           else
              PATH=$1:$PATH
           fi
        fi
}

# ksh workaround
if [ -z "$EUID" -a -x /usr/bin/id ]; then    # EUID 없으면 선언
        EUID=`id -u`
        UID=`id -ru`
fi

# Path manipulation
if [ "$EUID" = "0" ]; then       # root 사용자이면 PATH 변수 선언, 위에 존재하는 pathmunge () 사용
        pathmunge /sbin
        pathmunge /usr/sbin
        pathmunge /usr/local/sbin
fi

# No core files by default
ulimit -S -c 0 > /dev/null 2>&1  # -S : Soft 설정, -c : core 파일의 최대 크기 설정

if [ -x /usr/bin/id ]; then      # USER, LOGNAME, MAIL 변수 선언
        USER="`id -un`"
        LOGNAME=$USER
        MAIL="/var/spool/mail/$USER"
fi

HOSTNAME=`/bin/hostname`         # HOSTNAME, HISTSIZE 변수 선언
HISTSIZE=1000

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
    INPUTRC=/etc/inputrc
fi

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC

# By default, we want umask to get set. This sets it for login shell
# Current threshold for system reserved uid/gids is 200
# You could check uidgid reservation validity in
# /usr/share/doc/setup-*/uidgid file
if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
    umask 002
else
    umask 022
fi

for i in /etc/profile.d/*.sh ; do    # /etc/profile.d/*.sh 스크립트 실행
    if [ -r "$i" ]; then
        if [ "${-#*i}" != "$-" ]; then
            . $i
        else
            . $i >/dev/null 2>&1
        fi
    fi
done

unset i                 # i 변수 unset
unset pathmunge         # pathmunge 함수 unset

/etc/profile 파일은 시스템 전체에서 사용되는 환경 변수를 설정하고, 로그인 시 자동으로 실행되는 프로그램을 정의합니다. 이 파일은 로그인 설정을 위한 시스템 전역 환경 변수와 시작 프로그램을 포함하고 있습니다. 이 파일에는 pathmunge() 함수가 정의되어 있습니다. 이 함수는 PATH 환경 변수에 디렉토리 경로를 추가할 때 사용됩니다. 이외에도, 이 파일에서는 다양한 변수들을 선언하고, umask 값을 설정하며, 스크립트를 실행합니다. 이렇게 설정된 환경 변수와 프로그램은 모든 사용자에게 적용됩니다.

 

[3-2] /etc/profile.d 디렉토리

/etc/profile.d 디렉토리는 다음 파일을 포함하고 있습니다:

# cd /etc/profile.d
# ls
colorls.csh  gnome-ssh-askpass.csh  lang.csh  vim.csh
colorls.sh   gnome-ssh-askpass.sh   lang.sh   vim.sh
glib2.csh    krb5-workstation.csh   less.csh  which-2.sh
glib2.sh     krb5-workstation.sh    less.sh

위의 파일들은 시스템 전반적으로 사용하는 환경 변수 및 쉘 설정에 대한 파일입니다. /etc/profile.d 디렉토리는 쉘을 시작할 때마다 실행됩니다. 이 디렉토리는 시스템에서 사용하는 쉘의 스타일에 따라 다르게 설정됩니다. 예를 들어 sh 스타일의 경우, sh -> ksh -> zsh -> bash 순으로 실행됩니다. csh 스타일의 경우, csh -> tcsh 순으로 실행됩니다. 이러한 환경 변수 및 쉘 설정은 시스템 전반적으로 영향을 미치므로, 이러한 파일들을 수정할 때는 주의해야 합니다.

 

[3-3] $HOME/.bash_profile 파일

$HOME/.bash_profile 파일은 사용자별 환경 변수 및 시작 프로그램을 설정하는 데 사용됩니다. 이 파일은 사용자가 로그인 할 때마다 실행되며, .bashrc 파일을 포함합니다. .bashrc 파일은 쉘을 열 때마다 실행됩니다.

이 파일은 사용자의 쉘 환경 설정을 변경하려는 경우에 수정할 수 있습니다. 이 파일을 수정하면 새로운 쉘을 열 때마다 수정된 내용이 반영됩니다. 사용자마다 다른 환경 설정을 유지하려는 경우 이 파일을 사용하면 됩니다.

# Get the aliases and functions    /* ~/.bashrc 파일 실행 */
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin               /* PATH 변수에 $HOME/bin 추가 */

export PATH                        /* PATH 변수 export */
unset USERNAME                     /* USERNAME 변수 unset */

$HOME/.bash_profile 파일을 사용하여 사용자마다 필요한 환경 설정을 자동으로 로드할 수 있습니다. 이 방법은 사용자가 별도의 경로 설정 없이도 $HOME/bin 디렉토리의 파일들에 액세스 할 수 있도록 경로를 설정하는 것입니다.

그 외에도 이 파일을 사용하여 불필요한 변수와 명령문을 제거하여 쉘의 실행 속도를 향상시킬 수 있습니다. 이를 위해 unset 명령문을 사용하여 USERNAME 변수를 제거하였습니다.

따라서 $HOME/.bash_profile 파일은 사용자의 환경 설정을 변경하고 새로운 쉘을 열 때마다 필요한 환경 설정을 자동으로 로드하는 데에 사용됩니다.

 

[3-4] $HOME/.bashrc 파일

$HOME/.bashrc 파일은 사용자별 별칭과 기능을 설정하는 파일입니다. 이 파일은 사용자가 좀 더 쉽게 명령어를 사용할 수 있도록 돕습니다. 예를 들어, 파일을 삭제할 때, 삭제 여부를 물어보는 alias를 선언할 수 있습니다. 이 파일은 /etc/bashrc를 소스로 사용합니다.

# User specific aliases and functions

alias rm='rm -i'                   /* 파일을 삭제할 때, 삭제 여부를 물어보는 alias */
alias cp='cp -i'                   /* 파일을 복사할 때, 복사 여부를 물어보는 alias */
alias mv='mv -i'                   /* 파일을 이동할 때, 이동 여부를 물어보는 alias */

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

이 파일은 사용자가 자신만의 명령어를 만들고, 기능을 추가할 수 있도록 해줍니다. 이러한 기능들은 사용자가 명령어를 입력할 때마다 실행됩니다.

즉, 이 파일은 사용자가 자신만의 개인적인 명령어 환경을 만들 수 있도록 도와주는 역할을 합니다.

 

[3-5] /etc/bashrc 파일

/etc/bashrc 파일에는 시스템 전역 함수와 별칭이 포함되어 있습니다. 이 파일은 환경 변수가 /etc/profile에 정의된 것과는 별개입니다.

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# are we an interactive shell?
if [ "$PS1" ]; then
  if [ -z "$PROMPT_COMMAND" ]; then
    case $TERM in
        xterm*)
                if [ -e /etc/sysconfig/bash-prompt-xterm ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-xterm
                else
                        PROMPT_COMMAND='printf "\\\\\\\\033]0;%s@%s:%s\\\\\\\\007" "${USER}" "${HOSTNAME%%.*}" \\\\\\\\
                        "${PWD/#$HOME/~}"'
                fi
                ;;
        screen)
                if [ -e /etc/sysconfig/bash-prompt-screen ]; then
                        PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
                else
                        PROMPT_COMMAND='printf "\\\\\\\\033]0;%s@%s:%s\\\\\\\\033\\\\\\\\\\\\\\\\" "${USER}" "${HOSTNAME%%.*}" \\\\\\\\
       "${PWD/#$HOME/~}"'
                fi
                ;;
        *)
                [ -e /etc/sysconfig/bash-prompt-default ] && \\\\\\\\
       PROMPT_COMMAND=/etc/sysconfig/bash-prompt-default
            ;;
    esac
  fi

  # Turn on checkwinsize
  shopt -s checkwinsize

  # Set default PS1 for interactive shell
  if [ "$PS1" = "\\\\\\\\\\\\\\\\s-\\\\\\\\\\\\\\\\v\\\\\\\\\\\\\\\\\\\\\\\\$ " ] ; then
        PS1="[\\\\\\\\u@\\\\\\\\h \\\\\\\\W]\\\\\\\\\\\\\\\\$ "
  fi
fi

if ! shopt -q login_shell ; then
    # We're not a login shell
    # Need to redefine pathmunge, it get's undefined at the end of /etc/profile
    pathmunge () {
                if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
                        if [ "$2" = "after" ] ; then
                                PATH=$PATH:$1
                        else
                                PATH=$1:$PATH
                        fi
                fi
        }

    # By default, we want umask to get set. This sets it for non-login shell.
    # You could check uidgid reservation validity in
    # /usr/share/doc/setup-*/uidgid file
    if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
       umask 002
    else
       umask 022
    fi

    # Only display echos from profile.d scripts if we are no login shell
    # and interactive - otherwise just process them to set envvars
    for i in /etc/profile.d/*.sh; do
        if [ -r "$i" ]; then
            if [ "$PS1" ]; then
                . $i
            else
                # Redirects all output to /dev/null
                . $i >/dev/null 2>&1
            fi
        fi
    done

        unset i
        unset pathmunge
fi

# vim:ts=4:sw=4

/etc/bashrc 파일은 시스템 전역 함수와 별칭이 포함된 파일입니다. 이 파일은 시스템 전체에서 사용될 수 있습니다. 이 파일은 환경 변수가 /etc/profile에 정의된 것과는 별개입니다.

변수 PS1은 환경 변수입니다. 이 변수는 인터랙티브 셸에서 사용됩니다. PROMPT_COMMAND 변수는 PS1 변수와 함께 사용됩니다. 이 변수는 셸에서 실행되는 명령을 저장합니다. 이 변수는 셸 프롬프트와 함께 사용됩니다.

파일 /etc/sysconfig/bash-prompt-xterm, /etc/sysconfig/bash-prompt-screen 및 /etc/sysconfig/bash-prompt-default는 셸 프롬프트와 함께 사용됩니다.

쉘에서 checkwinsize 명령을 사용하면 쉘 창의 크기를 측정할 수 있습니다.

pathmunge() 함수는 PATH 변수에 경로를 추가합니다. 이 함수는 쉘에서 사용됩니다.

umask는 새로운 파일이 생성될 때 기본적으로 사용되는 권한을 설정합니다. UMASK 값을 설정합니다.

/etc/profile.d 디렉토리의 스크립트는 인터랙티브 셸에서만 실행됩니다. 이 스크립트는 셸 환경 변수를 설정합니다.

 

[3-6] $HOME/.bash_logout

$HOME/.bash_logout은 bash 셸에서 로그아웃 할 때 실행되는 파일입니다. 이 파일의 주요 목적은 화면을 지우는 것이지만, 추가적인 작업을 수행하는 것도 가능합니다.

다음은 $HOME/.bash_logout 파일이 포함할 수 있는 예시입니다:

# ~/.bash_logout

clear

화면을 지우는 것은 공유 컴퓨터에서 작업하거나 다른 사람이 작업 내용을 보지 못하게 하려는 경우 특히 유용합니다.

$HOME/.bash_logout 파일에서 수행할 수 있는 다른 작업으로는 파일 삭제, 백업 생성 또는 스크립트 실행 등이 있습니다. $HOME/.bash_logout 파일은 로그아웃하는 사용자로서 실행되므로 해당 사용자와 동일한 권한과 제한을 받습니다.

 

사용자 환경 파일이 읽혀 지는 순서에 대한 실습

환경 파일은 사용자가 로그인할 때마다 읽히는 파일로 사용자의 선호 설정, 환경 변수, alias 등을 지정할 수 있습니다. 이번 예제에서는 사용자의 환경 파일이 읽히는 순서를 알아보기 위해 테스트용 파일을 추가하고, 어떤 파일이 읽히는지를 확인해보겠습니다.

① /etc/profile 파일에 테스트 내용 추가

먼저, /etc/profile 파일에 테스트용 내용을 추가합니다. 이를 통해 /etc/profile 파일이 읽히는지 확인할 수 있습니다.

■ /etc/profile -> /etc/profile.d/*.sh

# cat /etc/profile | head -10
echo "|---> /etc/profile read"             <----- 새로운 라인 추가

# /etc/profile

# System wide environment and startup programs, for login setup
# Functions and aliases go in /etc/bashrc

pathmunge () {
        if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
           if [ "$2" = "after" ] ; then
              PATH=$PATH:$1
           else

② /etc/profile.d 디렉토리에 테스트용 스크립트 생성

다음으로, /etc/profile.d 디렉토리에 테스트용 스크립트를 생성합니다. 이 스크립트는 /etc/profile 파일에서 호출됩니다.

# cd /etc/profile.d
# cat test.sh
------------------------------------------------
#!/bin/bash
echo "|---> /etc/profile.d/*.sh read"
------------------------------------------------

③ ~/.bash_profile 파일에 테스트 내용 추가

이번에는 사용자의 홈 디렉토리에 있는 ~/.bash_profile 파일에 테스트용 내용을 추가합니다.

■ ~/.bash_profile -> ~/.bashrc -> /etc/bashrc

# cat ~/.bash_profile | head -10
echo "|---> ~/.bash_profile read"        <----- 새로운 라인 추가

# .bash_profile

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

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

④ ~/.bashrc 파일에 테스트 내용 추가

다음으로, ~/.bashrc 파일에 테스트용 내용을 추가합니다. 이 파일은 사용자가 로그인할 때마다 실행됩니다.

# cat ~/.bashrc | head -10
echo "|---> ~/.bashrc read"             <----- 새로운 라인 추가

# .bashrc

# User specific aliases and functions

alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'

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

⑤ /etc/bashrc 파일에 테스트 내용 추가

마찬가지로, /etc/bashrc 파일에도 테스트용 내용을 추가합니다.

# cat /etc/bashrc | head -10
echo "|---> /etc/bashrc read"               <---- 새로운 라인 추가

# /etc/bashrc

# System wide functions and aliases
# Environment stuff goes in /etc/profile

# are we an interactive shell?
if [ "$PS1" ]; then
  if [ -z "$PROMPT_COMMAND" ]; then
    case $TERM in
        xterm*)

⑥ ~/.bash_logout 파일에 테스트 내용 추가

마지막으로, ~/.bash_logout 파일에 테스트용 내용을 추가합니다. 이 파일은 사용자가 로그아웃할 때마다 실행됩니다.

# cat ~/.bash_logout
echo "|---> ~/.bash_logout read"           <----- 새로운 라인 추가

# ~/.bash_logout

⑦ 사용자로 로그인

이제, 테스트용 파일을 모두 추가하고, 사용자로 로그인해봅니다. 로그인 후, 사용자의 환경 파일이 어떤 순서로 읽히는지를 확인할 수 있습니다.

[root@server1 ~]# ssh root@localhost
root@localhost's password:
Activate the web console with: systemctl enable --now cockpit.socket

Last login: Thu Dec 10 18:37:17 2020 from 192.168.10.1
|---> /etc/profile read
|---> /etc/profile.d/*.sh test.sh read
|---> /etc/bashrc read
|---> /etc/bashrc out
|---> ~/.bash_profile read
|---> ~/.bashrc read
|---> /etc/bashrc read
|---> /etc/bashrc out
|---> ~/.bashrc out
|---> ~/.bash_profile out

⑧ 하위 쉘(Sub Shell) 실행

또한, 하위 쉘(Sub Shell)을 실행해봅니다. 이 때, 사용자의 환경 파일이 경로에 따라 어떻게 읽히는지를 확인할 수 있습니다.

# bash
|---> ~/.bashrc read
|---> /etc/bashrc read
|---> /etc/profile.d/*.sh read

⑨ 새로운 윈도우(Window) 실행

새로운 윈도우(Window)를 실행해봅니다. 이 때, 사용자의 환경 파일이 어떻게 읽히는지를 확인할 수 있습니다.

-> 바탕화면(Work Space)에서 오른쪽 마우스 클릭
-> 터미널 열기
-> 출력 내용 확인
|---> ~/.bashrc read
|---> /etc/bashrc read
|---> /etc/profile.d/*.sh read
# exit

⑩ 이전 명령어 윈도우에서 로그 아웃(Logout)

마지막으로, 이전 명령어 윈도우에서 로그아웃합니다. 이 때, 사용자의 환경 파일이 어떻게 읽히는지를 확인할 수 있습니다.

# exit
# exit
echo "|---> ~/.bash_logout read"

파일이 읽히는 순서는 다음과 같습니다.

로그인 이후 쉘 할당 까지
|---> /etc/profile read
|---> /etc/profile.d/*.sh read
|---> /etc/bashrc read
|---> ~/.bash_profile read
|---> ~/.bashrc read
|---> /etc/bashrc read

하위 쉘 생성
|---> ~/.bashrc read
|---> /etc/bashrc read
|---> /etc/profile.d/*.sh read

로그아웃
|---> ~/.bash_logout read

이를 통해 사용자의 환경 파일이 어떤 순서로 읽히는지를 확인할 수 있습니다.

 

[4] 환경 파일의 활용 예

[4-1] 사용자 환경 파일에 등록 될수 있는 내용들

사용자 환경 파일은 사용자가 로그인 할 때마다 실행되는 스크립트입니다. 이 파일에는 다양한 설정이 가능합니다. 이번에는 사용자 환경 파일에 등록할 수 있는 내용들을 살펴보겠습니다.

■ 변수 설정
		PATH, PS1, 사용자 정의 변수 설정

환경 변수는 사용자가 프로그램을 실행할 때 참조하는 정보입니다. 예를 들어, PATH 환경 변수는 실행 파일이 어디에 있는지를 알려주는 역할을 합니다. 사용자 환경 파일에 환경 변수를 추가하면, 프로그램을 더욱 편리하게 사용할 수 있습니다.

■ 엘리어스(Alias) 설정
		alias ls='ls -hF'

엘리어스는 명령어를 간단하게 바꿀 수 있는 기능입니다. 예를 들어, ls -hF 명령어를 매번 입력하기 번거로우시다면, 엘리어스를 이용하여 ls 명령어만 입력하면 됩니다. 사용자 환경 파일에 엘리어스를 추가하면, 명령어를 더욱 편리하게 사용할 수 있습니다.

쉘은 운영체제에서 사용자와 컴퓨터 하드웨어 사이의 인터페이스 역할을 합니다. 따라서 쉘에는 다양한 기능이 내장되어 있습니다. 사용자 환경 파일에 쉘의 기능을 추가하면, 컴퓨터 사용이 더욱 편리해질 수 있습니다.

 

[4-2] 선언 예

아래는 ~/.bashrc 파일의 예시입니다. 이 파일은 터미널을 시작할 때마다 실행되는 스크립트 파일입니다. 이 파일을 수정하여 터미널 환경을 사용자에 맞게 커스터마이징할 수 있습니다. 이 파일은 텍스트 편집기에서 열 수 있으며, 사용자의 홈 디렉토리에 위치합니다. 아래는 이 파일에 추가할 수 있는 alias와 함수의 예시입니다.

# cat ~/.bashrc
# .bashrc

# User specific aliases and functions

alias rm='rm -i'             /* 기본적인 명령어에 대한 alias 선언 */
alias cp='cp -i'
alias mv='mv -i'

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

---------------------------- ~/.bashrc 파일 하단에 추가 -----------------------------
# (a). 기본적인 alias
alias c='clear'      /* 명령어를 짧게 사용하기 위한 설정 */
alias h='history'
alias t='/usr/kerberos/bin/telnet 172.16.9.252'
alias d='cd /test && rm -rf /test/*'

alias grep='/bin/grep -i --color' /* 명령어 옵션 */
alias cat='/bin/cat -n'
alias df='/bin/df -h -T'
alias ls='ls -h --color=tty'

# (b). 필요한 경우 선언하는 alias
alias lsf='/bin/ls -al | grep ^-'      /* 새로운 명령어를 위한 alias */
alias lsd='/bin/ls -al | grep ^d'
alias pps='/bin/ps -ef | head -1 ; ps -ef | grep $1'
alias ddf='/bin/df -h -F ext3 ; echo ; /bin/df -i'

alias dir='/bin/ls -ailhF | more'   -----> 윈도우즈 명령어 실행 alias
alias ipconfig='ifconfig'           -----> 윈도우즈 명령어 실행 alias
alias topas='top'                   -----> AIX
alias bdf='df -h'                   -----> HP-UX
alias prstat='top'                  -----> Solars

alias nslookup='/usr/local/bin/nslookup' /* 다른 위치의 명령어 실행 */
alias vi='/usr/bin/vim'

# (c). 편리한 기능의 alias
/*
Webserver(Apache)
/etc/httpd/conf/httpd.conf -----> Configuration File
/var/www/html              -----> Source Directory
/etc/httpd/logs            -----> Log Directory
*/

# 설정 파일
alias fconf='vi /etc/vsftpd/vsftpd.conf'
alias wconf='vi /etc/httpd/conf/httpd.conf'
alias vsftpd.conf='vi /etc/vsftpd/vsftpd.conf'
alias httpd.conf='vi /etc/httpd/conf/httpd.conf'
# 소스디렉토리 이동
alias wdir='cd /var/www/html'
# 로그파일 모니터링
alias mlog='tail -f /var/log/messages'
alias wlog='tail -f /etc/httpd/logs/access_log'
alias welog='tail -f /etc/httpd/logs/error_log'
alias slog='tail -f /var/log/secure'
/* 실무에서 많이 사용되는 로그 파일 이름 형식 */ (예) file_1210.log
# tail -f /logs/file_1210.log
# tail -f /logs/file_`date +%m%d`.log
# alias slog='tail -f /logs/file_`date +%m%d`.log'
# alias slog="view /logs/file_`date --date '1 days ago' +%m%d`.log"
# alias slog="view /logs/file_`date --date '2 days ago' +%m%d`.log"
---------------------------- ~/.bashrc 파일 하단에 추가 -----------------------------

위의 예시에서는 ~/.bashrc 파일의 예시를 제공하고 있습니다. 이 파일은 터미널을 시작할 때마다 실행되는 스크립트 파일이며, 사용자는 이 파일을 수정하여 터미널 환경을 사용자 친화적이고 효율적으로 만들 수 있습니다. 기본적인 alias부터 필요한 경우 선언하는 alias, 편리한 기능의 alias까지 다양한 alias와 함수를 설정할 수 있습니다. 사용자는 해당 파일을 텍스트 편집기에서 열어서 원하는 alias와 함수를 추가할 수 있습니다. 이 파일은 사용자의 홈 디렉토리에 위치합니다.

반응형