쉘프로그래밍강좌011: 쉘변수 확인 및 현재사용계정의 쉘변수와 쉘변수값 확인하는 env 개론과 활용
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,181 조회
- 0 추천
- 목록
본문
쉘프로그래밍강좌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결과와 동일함을 알 수 있습니다.
관련자료
-
이전
-
다음