Linux Shell 이란?

김성진·2021년 12월 13일
0

지난 주말에 반도체 설계를 하는 친구를 만나 이런저런 이야기를 나누다, 그 친구도 개발자는 아니지만 Linux는 6년째 사용 중이며 script파일을 실행해서 주로 업무를 한다는데, 운영체제에 대한 정확한 설명을 하지 못 하는 "나(개발자)" 자신을 보며 공부 좀 해야겠다는 생각에 블로깅한다. 그래서 먼저 Shell을 공부한다.

먼저 Shell이란?

  • 사용자 명령어 해석기
  • 사용자가 프롬프트에 입력한 명령을 해석해서 운영체제에게 전달

그림과 같이 user가 command를 shell에 입력해서 Linux Kernel에게 전달
==> user(command) > shell > Linux Kernel

Shell의 종류 (가장 일반적인 4가지)

  1. Bourne shell(sh): Stephen Bourne이 개발한 Original shell, 최초의 unix에 들어간 shell
  2. C shell(csh, tcsh): Bill Joy가 C언어의 기술을 넣어서 만든 Shell (history, aliases, job control, vi command editing and completion rlsmd vhgka)
  3. Korn shell(ksh): David Korn이 AT&T에서 기존 bourne shell에 C shell의 기능을 포함시켜 생성.
  4. Bourne-again shell(bash): 최초의 'bourne shell'과 호환이 잘됨, MAC OS의 기본 shell이고 윈도에서도 wsl을 통해 사용가능
$ cat /etc/shells  # 사용 가능한 shell 리스트 확인
$ echo $SHELL		# 현재 작업 shell 확인
$ chsh 				# 로그인 Shell 변경


Shell의 변수란?

  • 데이터를 넣는 그릇
  • 선언한 필요없이 사용 가능
    변수명: 문자, 숫자, (언더바)로 구성될 수 있지만, 시작은 반드시 문자나 로 시작

변수 선언: varname=value (key, value 형태 앞에가 선언, 뒤는 데이터)

$ fname=jin
$ score=90

변수 확인: echo, set

$ echo $fname

변수 제거: unset varname

$ unset fname

Shell 환경 변수란?

  • 동작 되는 프로그램에게 영향을 주는 변수

환경 변수 선언:export varName=value

$ export NAME=kim
$ echo #NAME

시스템에 적용된 환경 변수 확인:env

$ env

기억해야할 환경변수

  • PATH: 명령어 탐색 경로
  • HOME: 홈디렉토리의 경로. cd 명령 실횅시 적용
  • USER: 로그인 사용자 이름
  • SHELL: 로그인 shell의 이름

간단한 shell script 작성

sh 파일 안에 아래 작성.

echo "===================="
date +%Y-%m-%d
df -h /

shell script는 실행전에 chmod +x [filename] 으로 x를 할당하여 실행

profile
multi-national communicator with programming (back-end)

0개의 댓글