리눅스 셸 환경(Shell Environment) 정의 및 이해와 쉘 환경변수 | Shell 시작 파일 2가지

ℹ️이 콘텐츠에는 광고가 포함되어,판매 발생 시 수익이 발생합니다.(네이버 쇼핑 커넥트, 아마존 어필리에이트, 애드센스 등)

셸 세션을 이용해서 서버와 상호 작용을 할 때 해당 동작과 리소스에 대한 연결을 결정하기 위해 컴파일 하는 많은 정보가 있습니다. 이러한 서정 중 일부는 구성 설정에 포함되어 있으며, 다른 설정은 사용자 입력에 의해 결정됩니다.

리눅스 셸 환경은 셸의 구성 설정사용자 입력에 의해 결정된 설정유지관리 영역을 이용해 관리하는 가장 일반적인 방법을 이용하게 됩니다. 셸 환경은 시스템 속성을 정의하는 변수가 포함된 세션을 시작할 때마다 쉘이 구축하는 정보 영역입니다.

하나의 유저가 실행시킨 셸을 의미하는 셸 세션(Shell session)은 환경(environment)이라고 하는 정보 집합을 유지합니다. 프로그램은 환경에 저장된 데이터를 사용하여 시스템 구성에 대한 사항을 확인하며, 일반적인 대부분의 프로그램들은 구성파일(configuration file) 을 사용하여 프로그램 설정을 저장하는 반면 일부 프로그램은 환경에 저장된 값을 찾아 동작을 조정합니다.

✅ 리눅스 셸 환경에 무엇이 저장되는가?

쉘은 환경에 셸 변수(shell variables)와 환경 변수(environment variables) 2가지의 기본 타입 데이터를 저장되며, bash를 사용하면 2 가지 타입을 거의 구분할 수 없습니다.

  • 리눅스에 저장되는 기본 변수
  • 셸 변수
  • bash에 의해 배치된 데이터 비트
  • 환경 변수
  • bash에 의해 배치된 데이터 비트 외의 모든 값

✅ 리눅스 셸 환경 저장 내용 확인하기

set, printenv와 같은 명령어를 입력해서 환경을 확인할 수 있습니다. set 명령어는 ⓐ셸 환경과 ⓑ환경변수를 모두 표시하며, printenv 명령어는 ⓑ환경변수만 출력합니다.

# printenv 명령어로 Shell 환경의 환경변수 확인.
~]# printenv

SHELL=/bin/bash
HISTCONTROL=ignoredups
HISTSIZE=1000
HOSTNAME=ip-172-31-11-71.ap-northeast-2.compute.internal
PWD=/home/ukc
LOGNAME=root
HOME=/root
LANG=C.UTF-8
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:
TERM=xterm
LESSOPEN=||/usr/bin/lesspipe.sh %s
USER=root
SHLVL=1
DEBUGINFOD_URLS=https://debuginfod.centos.org/ 
which_declare=declare -f
PATH=/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
MAIL=/var/spool/mail/root
BASH_FUNC_which%%=() {  ( alias;
 eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@
}
_=/usr/bin/printenv
OLDPWD=/root
  • 환경 변수의 목록에서
  • 개별 목록을 보고 싶은 경우 특정 변수 값을 인수(인자)로 입력해서 확인할 수 있습니다.
~]# printenv USER
root
printenv LANG
  • set 명령어를 옵션 없이 사용할 경우 환경 셸 환경의 변수와 셸 함수가 모두 표시됩니다.
~]# set 

BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extquote:force_fignore:globasciiranges:histappend:hostcomplete:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASHRCSOURCED=Y
BASH_ALIASES=()
BASH_ARGC=([0]="0")
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_REMATCH=()
BASH_SOURCE=()
BASH_VERSINFO=([0]="5" [1]="1" [2]="8" [3]="1" [4]="release" [5]="x86_64-redhat-linux-gnu")
BASH_VERSION='5.1.8(1)-release'
COLUMNS=119
DEBUGINFOD_URLS='https://debuginfod.centos.org/ '
DIRSTACK=()
EUID=0
GROUPS=()
HISTCONTROL=ignoredups
HISTFILE=/root/.bash_history
HISTFILESIZE=1000
HISTSIZE=1000
HOME=/root
HOSTNAME=ip-172-31-11-71.ap-northeast-2.compute.internal
HOSTTYPE=x86_64
IFS=$' \t\n'
LANG=C.UTF-8
LESSOPEN='||/usr/bin/lesspipe.sh %s'
LINES=25
LOGNAME=root
LS_COLORS='rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.m4a=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.oga=01;36:*.opus=01;36:*.spx=01;36:*.xspf=01;36:'
MACHTYPE=x86_64-redhat-linux-gnu
MAIL=/var/spool/mail/root
MAILCHECK=60
OLDPWD=/root
OPTERR=1
OPTIND=1
OSTYPE=linux-gnu
PATH=/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
PIPESTATUS=([0]="0")
PPID=1466
PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
/MAILCHECK=60             

리눅스 셸 환경에 표시되지 않는 것은 alias에 설정된 것으로 alias 명령어로 별도 확인할 수 있습니다.

~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'

✅ 리눅스 셸 환경변수 목록

리눅스 셸 환경의 대표적인 쉘 환경변수 목록입니다.

✅ Bash Shell 시작 파일 환경 구성

리눅스 셸 환경에서 사용자로 로그인하면 bash 프로그램이 시작되고 모든 사용자가 공유하며, 기본 환경을 정의하게 되는 시작 파일(startup file)이란 스트립트를 읽게 됩니다. 시작 파일은 모든 사용자에게 적용되는 일반 환경 설정을 위한 시작 파일이 실행되며, 두 번쨰 개인 사용자들에게 적용되는 개인 환경 설정 세팅을 위한 시작 파일이 실행됩니다.

시작 파일은 Shell 세션에 따라 2가지로 나뉘게 되며, 보통 로그인 셸 세션과 비로그인 셸 세션으로 나뉘게 욉니다.

  • 로그인 셸 세션
    • 로그인 셸 세션은 콘솔 접속 시 사용자 이름과 비밀번호를 입력을 요구하는 메시지가 표시되는 세션으로 SSH 등을 실행할 때 체크됩니다.
  • 비로그인 셸 세션
    • 로그인 없이 실행되는 셸로써 로컬 터미널, sudo bash, su 등이 있습니다.

1. 로그인 세션 시작 파일 위치

2. 비로그인 세션 시작 파일 위치

3. if 복합 명령

# .bash_profile

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

# User specific environment and startup programs
  • if 복합 명령(if compound command)은 .bashrc의 내용을 가져오는 명령입니다.
쉘 스크립트(Shell Script)

Similar Posts

  • 로그 파일 삭제 쉘 스크립트 만들기(날짜 20xx, 용량)

    httpd.conf 파일에 access_log 및 error_log를 설정 했을 때 logrotate 설정이 아닌 경우 로그 파일 삭제 쉘 스크립트가 필요할 때가 있습니다. 목차✅ 리눅스 셸 환경에 무엇이 저장되는가?✅ 리눅스 셸 환경 저장 내용 확인하기✅ 리눅스 셸 환경변수 목록✅ Bash Shell 시작 파일 환경 구성1. 로그인 세션 시작 파일 위치2. 비로그인 세션 시작 파일 위치3. if…

  • 셸 스크립트: 셸 들여쓰기 및 확장 옵션명[long 옵션명]

    명령어를 길게 사용하다 보면 여러 명령어 줄을 넘겨서 입력하는 경우가 발생합니다. 가독성을 높이기 위해 명령어를 문장 연결 하는 백슬래시(\)를 사용하여 셸 들여쓰기를 할 수 있습니다. 목차✅ 리눅스 셸 환경에 무엇이 저장되는가?✅ 리눅스 셸 환경 저장 내용 확인하기✅ 리눅스 셸 환경변수 목록✅ Bash Shell 시작 파일 환경 구성1. 로그인 세션 시작 파일 위치2. 비로그인…

  • [Linux] Shell 확장 6가지와 Shell 인용 3가지

    echo 명령어를 사용해서 Shell 확장(Expansion)에 대해 알아 보겠습니다. 목차✅ 리눅스 셸 환경에 무엇이 저장되는가?✅ 리눅스 셸 환경 저장 내용 확인하기✅ 리눅스 셸 환경변수 목록✅ Bash Shell 시작 파일 환경 구성1. 로그인 세션 시작 파일 위치2. 비로그인 세션 시작 파일 위치3. if 복합 명령 1. Shell 확장 Shell 확장(Expansion)이란 셸에서 프로그램을 실행하기 직전 사용자가…

  • [Linux] 쉘(Shell)과 커널&쉘 스크립트 및 프롬프트

    리눅스에 대해 공부하면서 터미널 창에서 명령어를 입력해서 관리를 하지만 시스템 자체에 대한 공부가 리눅스 서버를 운영하는데 많은 도움이 되기 때문에 기초와 개념에 대해 알아야 할 필요성을 가지게 되었습니다. 리눅스 쉘(Shell)과 쉘 스크립트(Shell Script) 그리고 프롬프트(Prompt)의 기본 개념에 대해 알아 보겠습니다. 목차✅ 리눅스 셸 환경에 무엇이 저장되는가?✅ 리눅스 셸 환경 저장 내용 확인하기✅ 리눅스…

  • 셸 스크립트란? 셸과 셸 프롬프트&bash shell

    목차✅ 리눅스 셸 환경에 무엇이 저장되는가?✅ 리눅스 셸 환경 저장 내용 확인하기✅ 리눅스 셸 환경변수 목록✅ Bash Shell 시작 파일 환경 구성1. 로그인 세션 시작 파일 위치2. 비로그인 세션 시작 파일 위치3. if 복합 명령 ▥ 셸 스크립트란(shell script)? 1. 셸이란? 키보드에 입력한 명령어를 운영체제에 전달해서 전달한 명령어를 실행하게 하는 프로그램이다. 2. 셸…

  • 셔뱅(Shebang) [#! /bin/bash]

    shebang (셔뱅 또는 해시뱅)은 스크립트 파일의 첫 줄에 쓰이는 #!(해시 기호 + 느낌표)로 시작하는 구문입니다. 이 줄은 해당 스크립트를 어떤 인터프리터로 실행 할지를 지정합니다. 인터프리터(interpreter)는 프로그래밍 언어로 작성된 코드를 한 줄씩 읽고 즉시 실행하는 프로그램입니다. 이는 “작성된 명령을 번역해서 곧바로 실행해주는 번역기”라고 볼 수 있습니다. 보통 ASCII 텍스트 파일로 작성된 셸 스크립트에서 해시…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 9   +   8   =