레벨264-3 : 생성한 쉘변수의 export속성제거하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,835 조회
- 0 추천
- 목록
본문
레벨264-3 : 생성한 쉘변수의 export속성제거하기
아래와 같이 아무런 옵션 없이 export라고만 하면 현재 정의된 변수와 그 값들이 출력됩니다. -p옵션을 사용하여 "export -p"라고 하여도 마찬가지입니다.
[root@file root]# export
declare -x BASH_ENV="/root/.bashrc" declare -x G_BROKEN_FILENAMES="1" declare -x HISTSIZE="1000" declare -x HOME="/root" declare -x HOSTNAME="file.superuser.co.kr" declare -x INPUTRC="/etc/inputrc" declare -x LANG="en_US.UTF-8" declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s" declare -x LOGNAME="root" declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33; 01:or=01;.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:" declare -x MAIL="/var/spool/mail/root" declare -x OLDPWD declare -x PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11: /usr/X11R6/bin:/root/bin" declare -x PWD="/root" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass" declare -x TERM="vt100" declare -x USER="root" declare -x USERNAME="root" [root@file root]# |
그리고 아래와 같이 NAME이라는 변수에 "ParkSungSoo"값을 넣어 export시켰습니다. 그리고 다시 export라는 명령어를 실행하여 현재 정의된 변수들을 확인 하였습니다. 아래 결과에서는 앞의 결과에는 없었던 NAME이라는 변수와 값이 출력됨을 확인할 수 있습니다.
[root@file root]# export NAME=ParkSungSoo [root@file root]# [root@file root]# export declare -x BASH_ENV="/root/.bashrc" declare -x G_BROKEN_FILENAMES="1" declare -x HISTSIZE="1000" declare -x HOME="/root" declare -x HOSTNAME="file.superuser.co.kr" declare -x INPUTRC="/etc/inputrc" declare -x LANG="en_US.UTF-8" declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s" declare -x LOGNAME="root" declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33; 35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:" declare -x MAIL="/var/spool/mail/root" declare -x NAME="ParkSungSoo"
declare -x OLDPWD declare -x PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11: /usr/X11R6/bin:/root/bin" declare -x PWD="/root" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass" declare -x TERM="vt100" declare -x USER="root" declare -x USERNAME="root" [root@file root]# |
그리고 정의된 NAME이라는 변수를 다음과 같이 제거하였습니다. export를 이용하여 변수를 제거하려면 다음과 같은 형식을 사용합니다.
사용형식 : export -n 변수명
즉, export로 할당하였던 변수를 제거하려면 -n옵션을 사용합니다.
그리고 아래는 NAME이라는 변수를 제거한 후에 다시 export명령어를 실행하여 현재 정의된 변수들을 확인한 것입니다.
[root@file root]# export -n NAME [root@file root]# [root@file root]# export declare -x BASH_ENV="/root/.bashrc" declare -x G_BROKEN_FILENAMES="1" declare -x HISTSIZE="1000" declare -x HOME="/root" declare -x HOSTNAME="file.superuser.co.kr" declare -x INPUTRC="/etc/inputrc" declare -x LANG="en_US.UTF-8" declare -x LESSOPEN="|/usr/bin/lesspipe.sh %s" declare -x LOGNAME="root" declare -x
LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33; declare -x MAIL="/var/spool/mail/root" declare -x OLDPWD declare -x PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11: /usr/X11R6/bin:/root/bin" declare -x PWD="/root" declare -x SHELL="/bin/bash" declare -x SHLVL="1" declare -x SSH_ASKPASS="/usr/libexec/openssh/gnome-ssh-askpass" declare -x TERM="vt100" declare -x USER="root" declare -x USERNAME="root" [root@file root]# |
결과 NAME이라는 변수가 export해제된 것을 확인할 수 있습니다. 이렇게 정의된 변수를 해제하려면 -n옵션을 사용하시면 됩니다. 거듭 당부 드리는 말씀이지만 export는 이 책의 declare와 함께 공부하시기 바랍니다.
레벨264-4 : export명령어로 사용자의 PATH추가하기
이번에는 좀 더 실무적인 예를 들어보겠습니다. 즉, 시스템을 사용하는 도중에 PATH를 추가해야 하는 경우가 발생할 수 있습니다. 즉, 기존 PATH에 새로운 PATH를 추가하는 경우가 발생할 수 있겠지요. 이런 경우에도 export를 이용하여 간편하게 PATH를 추가할 수 있습니다. 참고로 여기서 말하는 PATH란 명령어PATH를 의미하는 것으로 사용자가 실행한 (외부)명령어를 실행시키기 위하여 검색하게 될 디렉토리의 경로를 의미합니다. 이 명령어PATH는 쉘변수인 PATH라는 이름의 쉘변수에 저장되어 있습니다. 따라서 자기자신의 명령어PATH를 확인하려면 PATH라는 쉘변수의 값을 echo로 출력해 보면 됩니다.
다음은 현재 사용자의 명령어PATH를 확인한 것입니다.
[bible@su250 ~]$ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/bible/bin [bible@su250 ~]$ |
여기에 /sbin이라는 새로운 PATH를 추가하고자 합니다. 다음과 같이 하십시오.
[bible@su250 ~]$ export PATH=$PATH:/sbin [bible@su250 ~]$ [bible@su250 ~]$ echo $PATH /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/bible/bin:/sbin [bible@su250 ~]$ |
이제부터는 이 사용자는 현재 디렉토리위치가 어디든 /sbin에 있는 명령어들을 경로지정 없이 바로 실행할 수 있습니다. 당연히 각 개별 명령어들의 실행권한은 있어야만 합니다. 각 개별명령어들의 실행권한문제는 여기서 설명하고 있는 PATH와는 전혀 다른 개념입니다.
참고로 이렇게 export명령어로 추가된 PATH경로는 다음에 재로그인하면 없어져버립니다. 따라서 재로그인 후에도 지속적으로 PATH추가된 상태를 유지하려면 각 개별사용자의 .bash_profile이라는 파일에 추가PATH를 설정하시기 바랍니다. 이 .bash_profile이라는 파일에 대한 자세한 설명은 이 책의 .bash_profile편을 참고하십시오.
관련자료
-
이전
-
다음