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

쉘프로그래밍강좌009: 리눅스 서버로 로그인하는 모든 사용자들의 기본 사용환경 설정을 위한 /etc/profile의 역할과 용도

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

쉘프로그래밍강좌009: 리눅스 서버로 로그인하는 모든 사용자들의 기본 사용환경 설정을 위한 /etc/profile의 역할과 용도

 

 

 

 

각 개별사용자들의 홈디렉토리에 있는 .bash_profile이라는 파일은 각 사용자들의 개별적인 설정환경을 적용하기 위한 파일이라면 /etc/profile은 리눅스 서버로 로그인하는 모든 사용자에게는 공통으로 적용되는 설정환경파일입니다.

 

 

 

  , /etc/profile은 모든 사용자를 위한 시스템의 전반적인 사용환경 적용을 위한 설정파일입니다.

 

 

 

 

 

따라서 리눅스 서버관리자들은 모든 사용자에게 공통적으로 적용하고자 하는 사항이 있을 경우에는 이 파일에 추가적인 설정을 하시면 됩니다.

 

 

 

 

 

/etc/profile파일의 기본적이고 주된 역할을 간단히 정리해 보면 다음과 같습니다.

 

 

 

 

 

- 각 사용자의 기본적인 명령어 사용경로(PATH)를 설정합니다.

 

 

 

 

- 각 사용자의 core파일에 사이즈를 설정합니다.

 

 

 

 (기본은 생성되지 않도록 합니다.)

 

 

 



- 각 사용자의 쉘환경변수 USER에 해당사용자의 사용자명(id -un)을 저장합니다.

 

 

 

 

 

- 각 사용자의 쉘환경변수 LOGNAME USER에 저장된 사용자명을 저장합니다.

 

 

 

 

 

- 각 사용자의 쉘환경변수 MAIL에 사용자의 메일저장파일경로를 저장합니다.

 

 

 

 

 

- 각 사용자의 쉘환경변수 HOSTNAME에 시스템 호스트네임을 저장합니다.

 

 

 

 

 

- 각 사용자의 쉘환경변수 HISTSIZE에 히스토리파일(.bash_history)에 저장될 최대 개수를 지정합니다.

 

 

 

 

 

- 기타 필요한 기능설정과 사용환경설정을 위한 초기파일들을 불러들입니다.

 

 

 

 

 

 

이와 같이 /etc/profile의 용도와 기능은 로그인하는 개별 사용자들에게 시스템의 기본적인 사용환경설정을 제공하기 위한 용도로 사용됩니다.

 

 

 

 

 

앞서 말씀 드린 바와 같이 리눅스 서버로 로그인하는 모든 사용자들에게 공통적으로 적용할 사항이 있다면 /etc/profile에 적용하시면 됩니다.

 

 

 

 

 

참고로 아래는 이 파일의 기본적인 내용을 나타낸 것입니다.

 

 

 

 

 

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

# /etc/profile

 

# System wide environment and startup programs, for login setup

# Functions and aliases go in /etc/bashrc

 

# 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.

 

pathmunge () {

    case ":${PATH}:" in

        *:"$1":*)

            ;;

        *)

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

                PATH=$PATH:$1

            else

                PATH=$1:$PATH

            fi

    esac

}

 

 

if [ -x /usr/bin/id ]; then

    if [ -z "$EUID" ]; then

        # ksh workaround

        EUID=`/usr/bin/id -u`

        UID=`/usr/bin/id -ru`

    fi

    USER="`/usr/bin/id -un`"

    LOGNAME=$USER

    MAIL="/var/spool/mail/$USER"

fi

 

# Path manipulation

if [ "$EUID" = "0" ]; then

    pathmunge /usr/sbin

    pathmunge /usr/local/sbin

else

    pathmunge /usr/local/sbin after

    pathmunge /usr/sbin after

fi

 

HOSTNAME=$(/usr/bin/hostnamectl --transient 2>/dev/null) || \

HOSTNAME=$(/usr/bin/hostname 2>/dev/null) || \

HOSTNAME=$(/usr/bin/uname -n)

 

HISTSIZE=1000

if [ "$HISTCONTROL" = "ignorespace" ] ; then

    export HISTCONTROL=ignoreboth

else

    export HISTCONTROL=ignoredups

fi

 

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

 

for i in /etc/profile.d/*.sh /etc/profile.d/sh.local ; do

    if [ -r "$i" ]; then

        if [ "${-#*i}" != "$-" ]; then

            . "$i"

        else

            . "$i" >/dev/null

        fi

    fi

done

 

unset i

unset -f pathmunge

 

if [ -n "${BASH_VERSION-}" ] ; then

        if [ -f /etc/bashrc ] ; then

                # Bash login shells run only /etc/profile

                # Bash non-login shells run only /etc/bashrc

                # Check for double sourcing is done in /etc/bashrc.

                . /etc/bashrc

       fi

fi

[root@RockyLinux01 ~]#

 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


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