쉘프로그래밍강좌008: 리눅스의 모든 사용자들의 시스템 사용환경설정을 위한 /etc/bashrc파일의 용도와 기능
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,108 조회
- 0 추천
- 목록
본문
쉘프로그래밍강좌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파일의 초기 기본내용입니다.
관련자료
-
이전
-
다음