Linux Shell

이동명·2023년 11월 7일
0

Cent OS

목록 보기
7/13
post-thumbnail

쉘 기능

  • 입력을 읽고 해당 명령행을 분석하여 커널에게 전달한다

// 명령행을 분석하여 커널에게 전달한다
ls -l /root


// 특수 문자(메타케릭터)를 분석하여 커널에게 전달한다.
ls -l /etc/*.conf

// 파이프, 리다이렉션, 백그라운드 프로세스를 처리한다
ls -l /etc/*.conf | grep resolv > nameserver.txt
ls -l nameserver.txt
cat nameserver.txt

쉘 유형

  • CentOS 8 Stream 에서는 sh, bash 쉘을 기본적으로 제공한다. 그 외 나머지 쉘은 별도로 설치해야한다

쉘 관련 사용자 환경 파일

계정 로그인 및 쉘이 실행될 때 다음과 같은 순서대로 해당 파일들이 읽혀진다

  • 관리자가 일반 사용자의 홖경을 설정 시켜 주는 경우

    /etc/profile - 로그인 할 때만 읽혀진다.
    /etc/bashrc - 쉘이 실행 될때 마다 읽혀진다.
    /etc/profile.d/*.sh - 쉘이 실행 될때 마다 읽혀진다

  • 일반 사용자가 자신의 환경을 설정 하는 경우

    HOME/.bashprofile로그인할때만읽혀진다.HOME/.bash_profile - 로그인 할 때만 읽혀진다.HOME/.bashrc - 쉘이 실행 될때 마다 읽혀진다.

① 시스템에 필요한 환경 변수 내용들이 설정되어 있다. (# cat /etc/profile)
② 로그인한 계정에 필요한 환경 변수 내용들이 설정되어 있다. (# cat /root/.bash_profile)
③ 로그인한 계정에 필요한 명령어를 자동으로 실행하기 위한 내용들이 설정되어 있다. (# cat /root/.bashrc)
④ 모든 계정에게 적용되는 젂역 변수 내용들이 설정되어 있다. (# cat /etc/bashrc)

계정 로그아웃할 때 다음과 같은 순서대로 해당 파일이 실행된다

① 로그아웃할때 파일 앆에 있는 내용들이 실행된다. (# cat /root/.bash_logout)
② 로그인 중에 실행했던 명령어들을 로그아웃할때 저장하는 파일이다. (# cat /root/.bash_history)

'.bash_history' 파일과 'history' 명령어 차이점

  • '.bash_history' 파일에는 로그인 중에 실행했던 명령어들을 로그아웃할때 저장하는 파일이다.

  • 'history' 명령어는 예전부터 로그인 중까지 실행했던 모든 명령어들을 확인할 수 있다.

  • 사용자가 로그인하면 사용자의 명령어를 저장하기 위해서 'history'를 위한 Stack 공간이 할당된다.

  • 이때, Bash 쉘은 기본 1000 개 명령어까지 저장할 수 있으며, sh 쉘은 history 기능을 지원하지 않는다.

$HOME/.bashrc 재실행

  • '$HOME/.bashrc' 파일 내용이 수정되고 적용되려면 쉘을 재실행해야한다.

  • 그렇기 때문에 로그아웃 한 이후에 다시 로그인하면 쉘이 실행되기 때문에 새로 변경된 '.bashrc' 내용이 적용된다.

  • 또는 '. .bashrc', 'source .bashrc', 'source ~/.bashrc' 명령어를 이용하여 재실행할 수 있다.

  • 만약, 스크립트 파일을 실행하려면 점(.), source, sh, bash 명령어를 사용하면 된다.

  • 이때, 점(.)은 'source' 명령어와 같은 기능을 수행하지만, 권장하지는 않는다.

쉘 변수

  • 변수는 파일로 동작하는 것이 아니라, 메모리에서 처리되며 동작한다.

  • 그렇기 때문에 재부팅되거나 로그아웃 이후 로그인하면 변수 내용을 사라진다.

지역변수(Local Variable) : # VAR=5

홖경변수(Environment Variable) : # export VAR=5

특수변수(Special Variable) : $$, $?, $!, $0, $1, $#, $*.........

사용자 정의 변수

  • 사용자가 임의로 만들어서 사용하는 변수이며, 로그아웃 또는 재부팅되면 내용은 사라진다.

  • 만약, 로그인 중에 수동으로 삭제할 경우에는 unset 명령어를 사용한다.

환경 변수

  • 자주 사용하는 사용자 정의 변수를 환경 변수에 저장하면, 로그인 및 재부팅할때도 사용이 가능하다.

  • 그렇기 때문에 환경 변수를 '.bash_profile' 또는 '.bash_rc'에 설정하면 로그인 및 재부팅할때 사용할 수 있다.

  • 변수 이름은 대문자를 사용하는 것을 권장하며, 'env' 명령어를 이용하여 확인할 수 있다.

profile
Web Developer

0개의 댓글