환경 변수
- 시스템이 동작하는데 필요한 프로그램이나 스트립트가 참조하여 사용하는 변수
* 환경 변수의 종류
① 지역 환경 변수
- 현재 사용하는 쉘에서만 사용할 수 있는 변수
② 전역 환경 변수
- 현재 사용하는 쉘 뿐만 아니라 서브 쉘에서도 사용 할 수 있는 변수
+@ 서브쉘 : 로그인 쉘에서 생성한 쉘
로그인쉘 : 로그인할때 사용하는 기본쉘
지역 환경변수 테스트
① 변수의 선언 및 초기화
[ 사용법 ]
#변수명=값 //공백 사용x(주의)
Ex) A = 100 // x
B=100 // o
② 변수의 데이터 확인
[ 사용법 ]
#echo $변수명 // $뒤의 문자가 변수임을 나타낸다.
③ 변수 해제
[ 사용법 ]
#unset 변수명
④ 지역변수 설정 확인
[ 사용법 ]
#set
+@ 서브쉘로 이동
[ 사용법 ]
#/bin/bash //현재 쉘에서 서브쉘을 생성한다.
(하위)
! 실습
=========== 로그인 쉘 ===========
#echo GLOBAL // GLOBAL문자열 출력
#echo $GLOBAL // GLOBAL에 저장된 데이터 출력
- 없음(저장한적이 없기때문에) -
#GLOBAL=test // GLOBAL변수에 test데이터 저장
#echo $GLOBAL // GLOBAL에 저장된 데이터 출력 - test -
#/bin/bash // 서브쉘로 이동
============== 서브쉘 ============
#echo $GLOBAL // -없음-
#exit // 다시 로그인쉘로 이동
============= 로그인 쉘 ============
#echo $GLOBAL // - test -
#set // 지역변수 확인
#unset GLOBAL // GLOBAL 변수 해제
#echo $GLOBAL // - 없음 -
전역 환경 변수 테스트
① 변수의 선언 및 초기화
[ 사용법 ]
#export 변수명=값 // 공백 사용x(주의)
Ex)export A = 100 // x
export B=100 // o
② 변수의 데이터 확인
[ 사용법 ]
#echo $변수명 // $뒤의 문자가 변수임을 나타낸다.
③ 변수 해제
[ 사용법 ]
#unset 변수명
④ 전역변수 설정 확인
[ 사용법 ]
#env
! 실습
=========== 로그인 쉘 ===========
#echo GLOBAL // GLOBAL 문자열 출력
#echo $GLOBAL // GLOBAL에 저장된 데이터 출력
- 없음 -
#GLOBAL=test // GLOBAL변수에 test데이터 저장
#echo $GLOBAL // - test -
#/bin/bash // 서브쉘로 이동
============== 서브쉘 ============
#echo $GLOBAL // - test - (전역변수의 영역은 서브쉘까지)
#exit // 다시 로그인쉘로 이동
============= 로그인 쉘 ============
#echo $GLOBAL // - test -
#env // GLOBAL 확인
#unset GLOBAL // GLOBAL 변수 해제
#env // GLOBAL이 없다.
#echo $GLOBAL // - 없음 -
* PATH 변수 사용 ( 실행파일을 찾을 경로 )
- 명령어는 절대 경로를 입력해 주어야 한다.
! 실습
#echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
#python // 실행 o ( exit()로 파이썬 종료 )
#/usr/bin/python // 실행 o ( exit()로 파이썬 종료 )
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/root/bin
// /usr/bin경로를 환경변수에서 제거
#python // x ( 환경변수에서 제거되었기 때문에 실행 x )
#/usr/bin/python // o ( 절대경로를 입력하면 실행 o )
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/root/bin:/usr/bin
// /usr/bin경로를 환경변수에 다시 등록
#python // o ( exit()로 파이썬 종료 )
#/usr/bin/python // o ( exit()로 파이썬 종료 )
! 실습
#echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/root/bin:/usr/bin
#mkdir /root/pathEx // 테스트디렉터리 생성
#touch /root/pathEX/file{1..100} // 테스트파일 생성
#cd /root/pathEx // 이동
#cp /bin/ls ./myls // ls 명령어를 myls로 복사
#ls // o
#myls // x command not found
절대경로를 사용하거나
명령어가 위치한 디렉터리가 환경변수에 등록되어야 한다.
#/root/pathEx/myls // o ( 절대경로이기 때문 )
#PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/root/bin:/usr/bin:/root/pathEx // /root/pathEx를 환경변수에 추가
#ls // o
#myls // o ( 환경변수에 등록되었기 때문에 )
#/root/pathEx/myls // o
* PS1 변수 사용 ( 프롬프트 구조 정보 )
- PS1변수에서는 서식문자를 활용 할 수 있다. (서식문자의 종류는 공유폴더)
- 서식문자를 사용하여서 프롬프트 구조를 만드는 것이
어렵기 때문에 웹에서 쉽게 만들어서 사용 가능하다.
( 구글 검색 -> Bash generator )
Ex) 셋팅.txt
초록색
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;47m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
노랑색
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;226m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
파랑색
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;51m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
* TMOUT
- 실무 환경에서 사용하면 유용
- 세션을 사용하지 않을 경우 해당 변수에
설정된 값(초)동안 대기후 세션이 종료된다.
Ex)#TMOUT 10 //10초동안 입력이 없을 경우 종료
#TMOUT 600 //10분동안 입력이 없을 경우 종료
* 로그인시에 자동으로 실행되는 스크립트
① 시스템 전체에 적용할 내용이 작성되어있는 스크립트
/etc/profile
/etc/bashrc
② 특정 사용자에게만 적용할 내용이 작성되어있는 스크립트
~/.bash_profile
~/.bashrc
! 실습
@root
#useradd user1
#passwd user1
111
111
#useradd user2
#passwd user2
111
111
@user1,user2 로그인
@root,user1,user2
#grep "root" /etc/passwd //컬러적용x
#alias grep="grep --color=auto" //컬러설정
#grep "root" /etc/passwd //컬러적용o
root,user1,user2재접속
#grep "root" /etc/passwd //컬러적용x
//alias나 환경변수는 재로그인시
설정값이 사라진다.
@root
#vi /etc/bashrc //시스템 전체에 적용할 스크립트
---------------------
- 맨하단에 추가 -
alias grep="grep --color=auto" //컬러설정
:wq
---------------------
@root,user1,user2
#grep "root" /etc/passwd //컬러적용x
@root,user1,user2 재 접속
#grep "root" /etc/passwd //모두에게 적용
@root,user1,user2
#cd ~ //홈디렉터리 이동
@root
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;47m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
@user1
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;226m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
@user2
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;51m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
~ 설정 적용( 프롬프트 색 변경 ) ~
@root,user1,user2 재 접속
~ 설정 적용x ~
@root
#vi .bashrc //특정사용자에게 적용되는 스크립트
-----------------
마지막행에 추가
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;47m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
:wq
-----------------
@user1
#vi .bashrc //특정사용자에게 적용되는 스크립트
-----------------
마지막행에 추가
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;226m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
:wq
-----------------
@user2
#vi .bashrc //특정사용자에게 적용되는 스크립트
-----------------
마지막행에 추가
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;51m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
:wq
-----------------
@root,user1,user2 재 접속
~ 설정 적용( 프롬프트 색 변경 ) ~
! 아래 명령어가 로그인시에 자동으로 실행되도록 설정해보세요. (시스템 전체 적용)
alias vi="vim"
alias grep="grep --color=auto"
PS1=내가 원하는 프롬프트
스냅샷 (이름: 환경변수 설정이후)
@root
(#yum install -y vim) //없을 경우 설치
#vi /etc/bashrc
------------------------
~ 맨 하단에 추가 ~
alias vi="vim"
alias grep="grep --color=auto"
export PS1="[\u@\[$(tput sgr0)\]\[\033[38;5;47m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \W]\\$\[$(tput sgr0)\]"
:wq
------------------------
VMware->Server-A태그(우클릭)-> snapshot
-> take a snapshot(환경변수 설정이후)