5. 쉘(Shell)
* 쉘의 기능과 종류
- 쉘이란? 사용자와 커널을 이어주는 프로그램이다.
- 쉘의 기능은 명령어 해석기능, 프로그래밍 기능, 사용자 환경 설정 기능이 존재한다.
- 쉘의 종류는 다음과 같다.
- 본 쉘: 스티븐 본이 만들고 초기에 만들어진 쉘이라 단순하고 처리 속도가 빠르다.
- C 쉘: 빌 조이가 만들고 본 쉘에 없는 history, alias 기능 등이 추가되어 있다.
- 콘 쉘: 데이비드 콘 쉘이 만들었다.
- bash 쉘: 본 쉘을 기반으로 업그레이드를 해서 만들어졌다.
[ 기본 쉘을 바꾸는 명령어 ]
- chsh: 새로운 쉘 생성
- chsh -l : 쉘 조회
- chsh -s /bin/sh user1 : 사용자의 쉘을 로그인 쉘을 바꿀 때.
* 쉘의 기본 사용법
- 특수문자 사용하기: 사용자가 더욱 편리하게 명령을 입력하고 실행할 수 있도록 다양한 특수문자 사용.
- * : 임의의 문자열을 나열하는 특수문자로 0개 이상의 문자로 대체.
- ls * : 현재 모든 디렉터리의 모든 파일과 서브 디렉터리를 나열.
- cp * /tmp: 현재 디렉터리로부터 /tmp 밑에 모든 파일을 복사.
- ls -F t*: t로 시작하는 모든 파일을 찾아준다.
- cp *.txt ../ch3: 확장자가 txt인 모든 파일을 상위 디렉터리 아래의 ch3 디렉터리에 복사한다.
- ls -l l*s: 파일명이 l로 시작하고 s로 끝나는 모든 파일을 찾아준다.
- 특수 문자 ; 와 | : 명령어와 명령을 연결.
- ;은 연결된 명령을 왼쪽부터 차례로 실행.
- |(파이프) 은 왼쪽 명령의 실행 결과를 오른쪽으로 전달.
- date; ls; pwd: data로 날짜 출력하고 현재 디렉터리 파일 리스트 출력하고 현재 경로까지 출력.
- ls -al / | more: 루트 디렉터리의 세부 파일리스트가 페이지 단위로 출력되는 명령어.
* 쉘 변수와 환경변수
- 쉘의 환경을 설정하기 위한 값을 저장할 수 있도록 쉘 변수와 환경 변수를 제공.
- 쉘 변수: 쉘에서만 사용되는 변수. 해당 쉘 세션에서만 작동.
my_var="Hello World"
echo $my_var
- 환경 변수: 현재 세션의 쉘뿐만 아니라 모든 쉘에 적용되는 변수
MY_VAR="Hello"
export MY_VAR
- set: 전체 변수 출력.
- env: 환경 변수 출력.
- alias: 별칭이라는 뜻. 명령어를 축약할 때 사용. 현재 세션에서만 유효.
alias kubectl=k
- 환경 설정 파일: 사용자가 로그인할 때 자동으로 실행되는 명령을 저장한 것이 환경 파일.
- 시스템 환경 설정 파일과 사용자 환경 설정 파일이 있음.
- /etc/ 에 있는 쉘보다 ~/.bashrc, ~/.bash_profile 이 우선순위로 적용.
- 접근 권한 명령어
- chmod: 기능 파일이나 디렉터리의 접근권한을 설정하는 명령어.
- 옵션 -R: 하위 디렉터리까지 모두 변경할 수 있다.
[ 기호 모드를 사용한 접근 권한 설정 예 ]
권한 표기 | 의미 |
u+w | 소유자(u)에게 쓰기(w) 권한 부여(+) |
u-x | 소유자(u)의 실행(x) 권한 제거(-) |
g+w | 그룹에 쓰기 권한 부여. |
o-r | 다른 사용자에게 읽기 권한 제거. |
g+wx | 그룹에 읽기, 실행 권한 부여. |
a+rwx | 모든 사용자에게 읽기, 쓰기, 실행 권한 부여. |
u=rwx | 소유자에게 읽기, 쓰기, 실행 권한 부여. |
go+rw | 그룹사용자와 다른 사용자에게 읽기, 쓰기 권한 부여. |
u+x,g+rw | 소유자에게 실행권한 부여, 그룹사용자에게 읽기,쓰기 권한 부여. |