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

쉘프로그래밍강좌011: 쉘변수 확인 및 현재사용계정의 쉘변수와 쉘변수값 확인하는 env 개론과 활용

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

쉘프로그래밍강좌011: 쉘변수 확인 및 현재사용계정의 쉘변수와 쉘변수값 확인하는 env 개론과 활용

 

 

 

 

 

 

리눅스에서 쉘변수들을 확인할 수 있는 명령어는 3가지가 있습니다.

 

 

 

 이번 강좌에서 설명하고 있는 env printenv, 그리고 declare입니다.

 

 

 

 

 

 

 

 

3가지를 간략하게 구분하여 말씀 드린다면 다음과 같습니다.

 

 

 

 

 

env는 쉘변수들을 리스트하는 것이 기본적인 목적이지만 쉘변수들에게 특정 값을 할당하거나 변경(Set each NAME to VALUE in the environment and run COMMAND.)하는 명령어입니다.

 

 

 

 

 

그리고 printenv는 쉘환경변수들의 부분 또는 전체를 출력하는 명령어(print all or part of environment)입니다.

 

 

 

 

 

마지막 declare는 쉘환경변수를 선언하는 용도로 사용됩니다.

 

 

 

 하지만, 변수리스트를 출력하는 목적으로도 사용되기도 합니다.

 

 

 

 

 

3가지의 차이점을 구분해서 기억해 두시기 바랍니다.

 

 

 

 이번 장에서는 env에 대해서만 설명합니다.

 

 

 

  설명드린바와 같이 env "environment"의 약어로서 쉘변수를 확인하거나 쉘환경에서 명령을 수행하는 명령어입니다.

 

 

 

  가장 흔히 사용하는 "env"용도로는 현재 사용하고 있는 계정의 쉘변수들을 출력하는 것입니다.

 

 

 

 말씀드린바와 같이 이 명령어는 printenv와 함께 익혀두셔야 합니다.

 

 

 

 

 

명령어위치 : /bin/env

 

사용형식

 

       env [-] [-i] [-u name] [--ignore-environment] [--unset=name] [--help]
           [--version][name=
]... [명령 [인수...]] env

 

 

 

 

다음과 같이 "env"라고 하면 현재 사용하고 있는 사용자계정의 쉘변수들을 모두 확인 할 수 있습니다.

 

 

 

  아래의 결과 첫번째 행의 HOSTNAME이라는 쉘변수가 있으며 이 변수에 저장된 값은 file.superuser.co.kr입니다.

 

 

 

 

 

[root@RockyLinux01 ~]# env

SHELL=/bin/bash

HISTCONTROL=ignoredups

HISTSIZE=1000

HOSTNAME=RockyLinux01

GUESTFISH_OUTPUT=\e[0m

PWD=/root

LOGNAME=root

XDG_SESSION_TYPE=tty

MODULESHOME=/usr/share/Modules

MANPATH=/usr/share/man:

GUESTFISH_RESTORE=\e[0m

MOTD_SHOWN=pam

HOME=/root

LANG=ko_KR.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:

GUESTFISH_PS1=\[\e[1;32m\]><fs>\[\e[0;31m\]

SSH_CONNECTION=192.168.19.111 52828 192.168.19.201 22

XDG_SESSION_CLASS=user

TERM=xterm

LESSOPEN=||/usr/bin/lesspipe.sh %s

USER=root

MODULES_RUN_QUARANTINE=LD_LIBRARY_PATH LD_PRELOAD

LOADEDMODULES=

SHLVL=3

GUESTFISH_INIT=\e[1;34m

XDG_SESSION_ID=2

XDG_RUNTIME_DIR=/run/user/0

SSH_CLIENT=192.168.19.111 52828 22

DEBUGINFOD_URLS=https://debuginfod.centos.org/

which_declare=declare -f

XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share

PATH=/root/.local/bin:/root/bin:/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

MODULEPATH=/etc/scl/modulefiles:/etc/scl/modulefiles:/etc/scl/modulefiles:/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles

DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus

MAIL=/var/spool/mail/root

SSH_TTY=/dev/pts/0

MODULES_CMD=/usr/share/Modules/libexec/modulecmd.tcl

BASH_FUNC_ml%%=() {  module ml "$@"

}

BASH_FUNC_which%%=() {  ( alias;

 eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@

}

BASH_FUNC_module%%=() {  _module_raw "$@" 2>&1

}

BASH_FUNC_scl%%=() {  if [ "$1" = "load" -o "$1" = "unload" ]; then

 eval "module $@";

 else

 /usr/bin/scl "$@";

 fi

}

BASH_FUNC__module_raw%%=() {  eval `/usr/bin/tclsh /usr/share/Modules/libexec/modulecmd.tcl bash "$@"`;

 _mlstatus=$?;

 return $_mlstatus

}

_=/usr/bin/env

[root@RockyLinux01 ~]#

 

 

 

 

두번째행에 보면 흔히 확인하고 사용하는 SHELL이라는 변수명이 있으며 여기에 저장된 값이 /bin/bash이며 현재 사용자(필자)가 사용하고 있는 쉘입니다.

 

 

 

 

 

또한 env로 확인 할 수 있는 아래 결과들의 변수들은 echo명령어로 하나씩 확인 할 수도 있습니다.

 

 

 

 이 예는 다음 사용예에 나와 있습니다.

 

 

 

 

 

 

env에 아무런 옵션 없이 실행하는 결과와 printenv는 동일한 결과를 출력합니다.

 

 

 

  아래의 예는 printenv의 결과를 출력한 것입니다.

 

 

 

 

 

[root@RockyLinux01 ~]# printenv

SHELL=/bin/bash

HISTCONTROL=ignoredups

HISTSIZE=1000

HOSTNAME=RockyLinux01

GUESTFISH_OUTPUT=\e[0m

PWD=/root

LOGNAME=root

XDG_SESSION_TYPE=tty

MODULESHOME=/usr/share/Modules

MANPATH=/usr/share/man:

GUESTFISH_RESTORE=\e[0m

MOTD_SHOWN=pam

HOME=/root

LANG=ko_KR.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:

GUESTFISH_PS1=\[\e[1;32m\]><fs>\[\e[0;31m\]

SSH_CONNECTION=192.168.19.111 52828 192.168.19.201 22

XDG_SESSION_CLASS=user

TERM=xterm

LESSOPEN=||/usr/bin/lesspipe.sh %s

USER=root

MODULES_RUN_QUARANTINE=LD_LIBRARY_PATH LD_PRELOAD

LOADEDMODULES=

SHLVL=3

GUESTFISH_INIT=\e[1;34m

XDG_SESSION_ID=2

XDG_RUNTIME_DIR=/run/user/0

SSH_CLIENT=192.168.19.111 52828 22

DEBUGINFOD_URLS=https://debuginfod.centos.org/

which_declare=declare -f

XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share

PATH=/root/.local/bin:/root/bin:/usr/share/Modules/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

MODULEPATH=/etc/scl/modulefiles:/etc/scl/modulefiles:/etc/scl/modulefiles:/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles

DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0/bus

MAIL=/var/spool/mail/root

SSH_TTY=/dev/pts/0

MODULES_CMD=/usr/share/Modules/libexec/modulecmd.tcl

BASH_FUNC_ml%%=() {  module ml "$@"

}

BASH_FUNC_which%%=() {  ( alias;

 eval ${which_declare} ) | /usr/bin/which --tty-only --read-alias --read-functions --show-tilde --show-dot $@

}

BASH_FUNC_module%%=() {  _module_raw "$@" 2>&1

}

BASH_FUNC_scl%%=() {  if [ "$1" = "load" -o "$1" = "unload" ]; then

 eval "module $@";

 else

 /usr/bin/scl "$@";

 fi

}

BASH_FUNC__module_raw%%=() {  eval `/usr/bin/tclsh /usr/share/Modules/libexec/modulecmd.tcl bash "$@"`;

 _mlstatus=$?;

 return $_mlstatus

}

_=/usr/bin/printenv

[root@RockyLinux01 ~]#

 

 

 

 

위의 예와 같이 printenv의 결과는 앞의 예에서 확인했던 env결과와 동일함을 알 수 있습니다.

 

 

 

 

 

 

관련자료

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

공지사항


뉴스광장


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