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 구동 과정
- 최초로 구동되는 프로세스는 PID 1 의 init 프로세스
- init 프로세스가 /bin/mingetty 프로세스를 실행시킴
- 사용자 및 패스워드 입력 후 /etc/passwd 에서 해당 사용자에게 설정 된 shell(Bash shell) 을 실행시킴
- 시스템 파일은 /etc/profile 을 찾아서 그 안의 명령어 들을 실행 시킴
- 사용자의 홈 디렉터리에서 .bash_profile 의 내용을 읽음
변수
변수의 종류
$ 지역 변수
- 자신을 생성한 쉘에서만 사용할 수 있다.
$ 환경 변수
- 자신을 생성한 쉘뿐만 아니라, 이로부터 파생되어 나온 자식 프로세스에서도 사용할 수 있다.
- 환경변수는 껐다 키면 리셋됨으로 각 사용자 디렉터리에 ./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
'리눅스(Linux)' 카테고리의 다른 글
[Centos 7] Regular Expression(정규 표현식) (0) | 2022.11.16 |
---|---|
[Centos 7] Standard I/O Redirection (0) | 2022.11.16 |
[Centos 7] Vi Editor (0) | 2022.11.15 |
[Centos 7] Browsing the Filesystem & 주요 디렉터리 계층 구조 (0) | 2022.11.15 |
[Centos 7] 리눅스 종료 명령어 & RUNLEVEL (0) | 2022.11.15 |