운영체제/shell(linux)

Shell Script란 ?

MIN--A 2021. 7. 19. 23:52
728x90

Shell (명령어 해석기) :

사용자가 user interface로 전달한 명령을 시스템 언어에 맞게 해석 후 시스템(커널)에 전달

 

script language :

배치언어 = 작업 제어언어 = 다이나믹 언어

반복되는 여러개의 작업을 간소화하여 매번 명령어를 반복 입력하지 않고 파일을 실행하면 해당 작업을 실행

shell이 이해할 수 있는 명령어를 순차적으로 처리하는 형태의 문장을 작성하여 반복 실행 

프로그램 코드를 별도의 처리과정(컴파일) 없이 특정 프로그램이 명령을 실시간으로 한 줄 씩 실행하는 프로그램

==> 컴파일을 하지 않는다 ! ==> 처리과정이 필요 없으므로 빨리 결과를 확인할 수 있다 !

 

shell script :

쉘을 통해 만들 수 있는 프로그램 

Linux,Unix ) ~.sh 

Window ) ~.bat , ~.ps(powershell) 

※ shell의 종류에 따라 명령어를 지원하지 않거나 동작을 안하는 경우가 있어서 스크립트 작성시 해당 쉘 꼭 표시 

 

지원하는 Shell 목록(쉘의 종류)

# cat /etc/shells
/bin/sh 
/bin/bash 
/sbin/nologin //shell 을 부여 X  
/bin/dash

 

 

 

기본 스크립트 작성

vim 1.sh 작성

 

쉘 스크립트 실행 
# ./1.sh
bash: ./1.sh 	//허가 거부

# ll ./1.sh  
-rw-r--r-- 1 root root 55 2021-07-19 18:34 ./1.sh 		//실행 퍼미션(x)이 X

# chmod 755 /root/1.sh  		//실행 퍼미션 부여 
# ll ./1.sh  
-rwxr-xr-x 1 root root 55 2021-07-19 18:34 ./1.sh 

# ./1.sh  
/root/test01.txt

 

 

!!!!! but !!!!!!! sh를 붙여서 실행하면 퍼미션 없이도 실행 가능

# sh /root/1.sh
/root/test01.txt

 

 

 

shell 변경하기

vi /etc/passwd 에서 하나의 계정을 nologin으로 변경한다 

 

 

# chsh -s /bin/bash test01   	//쉘 변경 명령어 
Changing shell for test01.
Shell changed.

# grep test01 /etc/passwd
test01:x:501:501::/home/test01:/bin/bash

 

 

현재 사용자가 사용하는 쉘 확인

# echo $SHELL

/bin/bash 

 

 

 

 

728x90