강좌
클라우드/리눅스에 관한 강좌입니다.
프로그램 분류

쉘프로그래밍강좌008: 리눅스의 모든 사용자들의 시스템 사용환경설정을 위한 /etc/bashrc파일의 용도와 기능

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

쉘프로그래밍강좌008: 리눅스의 모든 사용자들의 시스템 사용환경설정을 위한 /etc/bashrc파일의 용도와 기능

 

 

 

 

 

리눅스 서버에는 사용자들을 위한 시스템 사용환경설정 파일들이 있습니다.

 

 

 

 이들 환경설정파일들에 대한 전체적인 설명을 보시려면  본 웹사이트(www.linux.co.kr)  bash 강좌를 검색해서 보시기 바랍니다.

 

 

 

 

 

이번에는 리눅스 서버의 /etc/bashrc파일에 대해서 설명합니다.

 

 

 

 이 파일은 로그인과정에서 모든 개별사용자들에게 공통적으로 적용할 알리아스(alias)와 함수(function)들을 설정한 파일입니다.

 

 

 

 참고로 각 개별사용자들의 홈디렉토리에는 .bashrc라는 파일이 모두 있습니다.

 

 

 

  .bashrc파일이 각 개별사용자들의 개별적인 시스템사용환경을 설정하기 위한 파일이라면, 이번에 설명하는 /etc/bashrc파일은 시스템 전체사용자들에게 공통으로 적용할 시스템 사용환경설정파일입니다.

 

 

 

[root@RockyLinux01 ~]# cat /etc/bashrc

# /etc/bashrc

 

# System wide functions and aliases

# Environment stuff goes in /etc/profile

 

# It's NOT a good idea to change this file unless you know what you

# are doing. It's much better to create a custom.sh shell script in

# /etc/profile.d/ to make custom changes to your environment, as this

# will prevent the need for merging in future updates.

 

# Prevent doublesourcing

if [ -z "$BASHRCSOURCED" ]; then

  BASHRCSOURCED="Y"

 

  # are we an interactive shell?

  if [ "$PS1" ]; then

    if [ -z "$PROMPT_COMMAND" ]; then

      case $TERM in

      xterm*|vte*)

        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 "\033k%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 parallel history

    shopt -s histappend

    history -a

    # Turn on checkwinsize

    shopt -s checkwinsize

    [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h \W]\\$ "

    # You might want to have e.g. tty in prompt (e.g. more virtual machines)

    # and console windows

    # If you want to do so, just add e.g.

    # if [ "$PS1" ]; then

    #   PS1="[\u@\h:\l \W]\\$ "

    # fi

    # to your custom modification shell script in /etc/profile.d/ directory

  fi

 

  if ! shopt -q login_shell ; then # We're not a login shell

    # Need to redefine pathmunge, it gets undefined at the end of /etc/profile

    pathmunge () {

        case ":${PATH}:" in

            *:"$1":*)

                ;;

            *)

                if [ "$2" = "after" ] ; then

                    PATH=$PATH:$1

                else

                    PATH=$1:$PATH

                fi

        esac

    }

 

    # By default, we want umask to get set. This sets it for non-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 199 ] && [ "`/usr/bin/id -gn`" = "`/usr/bin/id -un`" ]; then

       umask 002

    else

       umask 022

    fi

 

    SHELL=/bin/bash

    # 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

                . "$i" >/dev/null

            fi

        fi

    done

 

    unset i

    unset -f pathmunge

  fi

 

fi

# vim:ts=4:sw=4

[root@RockyLinux01 ~]#

 

 

 

 

 

아래는 /etc/bashrc파일의 기본적인 기능과 용도를 간추린 것입니다.

 

 

 

 

 

- 전체 사용자들에게 공통적으로 적용할 알리아스(alias, 별칭명령어)를 설정한다.

 

 

 

 

 

- 전체 사용자들에게 공통적으로 적용할 함수(function)을 설정한다.

 

 

 

 

 

- 전체 사용자들의 기본 umask값을 설정한다.

 

 

 

 

 

- 전체 사용자들에게 PS1 환경변수를 설정한다.

 

 

 

 

 

- 전체 사용자들이 기본적으로 사용할 쉘프롬프트의 모양을 설정한다.

 

 

 

 

 

이 파일은 개별사용자의 홈디렉토리에 있는 .bashrc파일에 의해서 불리워져 모든 사용자들에게 적용됩니다.

 

다음은 sspark 사용자의 홈디렉토리에 있는 .bashrc 파일입니다.

 

이 파일의 앞부분에 보면 /etc/bashrc 파일을 소싱해서 적용하고 있다는 것을 알 수 있습니다.

 

 

 

[root@RockyLinux01 ~]# cat /home/sspark/.bashrc

# .bashrc

 

# Source global definitions

if [ -f /etc/bashrc ]; then

        . /etc/bashrc

fi

 

# User specific environment

if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]

then

    PATH="$HOME/.local/bin:$HOME/bin:$PATH"

fi

export PATH

 

# Uncomment the following line if you don't like systemctl's auto-paging feature:

# export SYSTEMD_PAGER=

 

# User specific aliases and functions

if [ -d ~/.bashrc.d ]; then

        for rc in ~/.bashrc.d/*; do

                if [ -f "$rc" ]; then

                        . "$rc"

                fi

        done

fi

 

unset rc

[root@RockyLinux01 ~]#

 

 

 

 

  따라서 리눅스 서버를 사용하는 모든 사용자들에게 적용할 알리아스(alias)와 함수(function)들이 있다면 이 파일에 추가하시면 됩니다.

 

 

 

 

 

그리고 다음은 이 파일(.bashrc)에 의해서 불리워지는 /etc/bashrc파일의 초기 기본내용입니다.

 

 

 

 

 

 

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,037 명
  • 현재 강좌수 :  35,810 개
  • 현재 접속자 :  157 명