[Centos 7] Shell & 변수

2022. 11. 15. 17:24리눅스(Linux)

$What is Shell?
   - 유닉스에서 대화형 사용자 인터페이스를 말함
   - 사용자가 입력하는 명령어를 이해하고, 실행하는 역할 (명령어 해석기)
   - 운영체계의 바깥 계층에 위치하며, 사용자와 커널의 의사소통을 담당
   - cshell, bourneshell, bashshell, tcshell, kornshell, 등 다양한 종류가 있음

 

 

$ Shell 의 역할
   - 입력을 읽고 해당 명령행을 분석
   - 특수 문자들을 평가함
   - 파이프, 리다이렉션, 백그라운드 프로세스를 설정
   - 시그널을 처리

 

$ Bash Shell
   - 다양한 내장 명령어, 히스토리, 별명, 파일, 명령어 완성 기능, 명령행 편집등의 기능을 지원
   - 2.X 버전에 접어 들면서 Corn Shell 과 C Shell에서 제공하는 기능들도 많이 추가되어 있음
   - Bourn Shell 과 하위 호환성도 유지하고 있음

 

Bash Shell 구동 과정

 

$ Bash Shell 구동 과정
   - 최초로 구동되는 프로세스는 PID 1 의 init 프로세스
   - init 프로세스가 /bin/mingetty 프로세스를 실행시킴
   - 사용자 및 패스워드 입력 후 /etc/passwd 에서 해당 사용자에게 설정 된 shell(Bash shell) 을 실행시킴
   - 시스템 파일은 /etc/profile 을 찾아서 그 안의 명령어 들을 실행 시킴
   - 사용자의 홈 디렉터리에서 .bash_profile 의 내용을 읽음

 

 

 

Shell 의 명령 수행과정
Shell 의 기능

 

변수
변수의 종류
$ 지역 변수
   - 자신을 생성한 쉘에서만 사용할 수 있다.
$ 환경 변수
   - 자신을 생성한 쉘뿐만 아니라, 이로부터 파생되어 나온 자식 프로세스에서도 사용할 수 있다.

   - 환경변수는 껐다 키면 리셋됨으로 각 사용자 디렉터리에 ./bash_profile 에 환경변수 추가해주면 영구등록

$ 변수 명칭 표준
   - 변수 이름에는 알파벳 a~z, A~Z, 0~9, 밑줄문자( _ ) 63개의 문자를 사용 할 수 있으며 첫 글자는 알파벳 혹은 밑줄문자( _ ) 만 쓸 수 있다.
$ 변수에 값 할당하기
   - 등호( = ) 를 사용하며 등호( = ) 양쪽에는 공백이 올 수 없다.

   - 공백이 오려면 "" (큰 따움표)로 묶어서 표시

ex) Variable=value, Variable="value value value"

 

변수치환

지역변수 설정

변수명=변수값
   - 형식
   
# A=Aegisone or # declare A=Aegisone
   - 지역 변수 A에 Aegisone라는 값을 지정
   
# lst=$(ls -l) 
   - lst 변수에 ls -l 명령어를 저장   
#
echo $A / # echo $B 
   - 지역 변수값 호출

 

환경변수 설정
$ 환경변수는 POSIX 표준에 의해 대문자를 사용한다.

# 변수명=변수값 ; export 변수명 
# export 변수명=변수값 
# declare -x variable=value 
# declare -x TEST=“TAEHEI“ 
   - 형식

# export NAME="Kim Jin Hong" 
   - 환경변수 NAME 생성

# export -n 환경변수 
# declare -a 환경변수
   - 환경변수 를 지역변수로 변환

# vi /root/.bash_profile 
# source /root/.bash_profile
   - 환경변수는 껐다 키면 리셋됨으로 각 사용자 디렉터리 ./bash_profile에 
   환경변수 추가해주면 영구등록
   - 이 환경변수는 등록한 사용자 환경에서만 사용가능

읽기 전용 변수

$ 재정의나 설정해제를 할 수 없는 특수 변수이다.
   - C 라는 변수를 readonly명령을 사용하여 읽기전용 변수로 지정

# C="ReadOnly Local Variable" 
# readonly C 
# C="Update" 
# declare -r C="ReadOnly Local Variable" 
# declare C="Update"
   - C 라는 변수를 readonly명령을 사용하여 읽기전용 변수로 지정

$ 설정변수 확인 및 삭제

# env | # printenv | # export
   - 설정 변수 확인

# echo $A | # echo $B | # echo $NAME 
   - 변수 출력 예시 
   
# unset 변수명 
   - 변수 해제

BASH 주요 환경변수

 

#!/bin/bash
echo ""
echo "My Bash Path: $BASH"
echo "My Bash Version: $BASH_VERSION"
echo "My Bash PID: $BASHPID"
echo "My HostName: $HOSTNAME"
echo "Who am I: $USER"
echo "USER Home Dir: $HOME"
echo "Working Dir: $PWD"
echo "Command Path: $PATH"
echo ""

echo "[Working Directory List]" 
   - 정형화된 작업에 대해서 명시, 작업에 편의성을 좋게 함

 

치환
$ 변수치환
   - 변수는 리눅스 사용환경 구성을 위환 설정에 사용됨
   - Windows 의 경우 환경 설정을 위해 환경설정 파일, 레지스트리, 환경변수 등을 사용한다
   - Unix 의 경우 환경 설정을 위해 환경설정파일, 환경변수 등을 사용한다

# export 변수명=$변수명:추가할 디렉터리 
# export PATH=$PATH:/home/test/bin 
   - 기존의 환경변수에 추가정보 구성하기

# export –n “환경변수” | # declear –a “환경변수”
   -  환경 변수 치환
   
# M="/bin/mkdir" 
# T="/bin/touch" 
# R="/bin/rm -rf" 

# $M /down/test_dir 
# $T /down/test_file 
# $R /down/{test_dir,test_file} 
   - alias와 유사한 기능으로 명령어와 옵션을 묶어서 사용

$ 명령어 치환

# 명령어 `명령어` 
   - Back quote( ` ) 사이에 있는 command는 수행 결과 값으로 치환
   
# kill -HUP `cat /var/run/xinetd.pid` 
   - 서비스 변경내용 적용하기

# echo `echo test` 
   - echo 명령이 수행되어 test만 출력이됨

$ 틸드(~) 치환
   -  ~(tilde) 는 사용자의 home 디렉터리를 의미한다

# echo ~
   - 홈 디렉터리 출력

# cd ~사용자계정명
   - 지정한 사용자의 홈 디렉터리로 이동

# cd ~- // $OLDPWD 
   - 바로 이전의 작업 디렉터리로 이동

쿼팅
$ What is Quoting

   - 치환을 억제 하거나 문자의 특수한 의미를 제거 한다

# echo '$HOSTNAME' 
   - 쿼터

# echo “$HOSTNAME” 
   - 이중쿼터
   
# echo \$HOSTNAME 
   - Back slash