본문 바로가기
서버/Linux

[Linux] 쉘 스크립트

by 느링 2017. 9. 28.

쉘 스크립트란?

쉘 스크립트는 User(사용자)와 커널간에 의사소통을 하게 해주는 프로그래밍 언어입니다.

따라서 복잡한 구조가 필요없는 작업들이나 시스템 엔지니어나 개발자 같이 Linux를 활요한 시스템 관련 작업에 유용합니다.

 

스크립트  Kernel과 사용자 가운데서 통역 역할

 

쉘 스크립트 장단점

쉘 스크립트를 이용하는 이유는 편의성 및 효율성 때문입니다.

반복적인 일을 간단한 연산자와 옵션들로 훌륭하게 처리가능한 점은 가장 큰 장점이라고 생각합니다.

 

장점

타 프로그래밍 언어에 비해 비교적 빠름

컴파일 단계가 없어 빠르게 실행 가능

시스템 유지보수에 용

 

단점

리소스에 민감한 작업의 경우 사용 어려움

다중 산술 작업에는 사용 불가

타 OS에 이식 어려움

 

 

※ 스크립트 파일은 해당 파일이 스크립트임을 알리기 위해서 확장자 .sh를 붙이는 게 관례입니다.

ex) vi test.sh

 

#!/bin/bash

내가 사용하는 명령어 해석기가 bash쉘임을 알려줍니다.

※ bash쉘을 이용하여 해당 스크립트 실행 ( c언어에서 #include<stdio.h>를 쓰는 것과 같음)

<예제 1>

 

sh [스크립트 명].sh를 이용하여 실행할 수 있습니다.

 

 

※cat을 이용하면 입력한 명령어만 보이고 결과는 출력되지 않습니다.

 

Login시 실행되는 파일의 순서

1. /etc/profile → /etc/profile.d/*

- 해당 디렉터리 안에 위치한 모든 스크립트

2. ~/.bash_profile                      

3. ~/.bashrc

4. /etc/bashrc

 

시스템에 모든 사용자에게 적용 할 설정이 있는 파일

 /etc/profile, /etc/bashrc

 

해당 사용자에게만 적용 할 설정이 있는 파일

 ~/.bash_profile , ~/.bashrc

 

문제 1) root 계정으로 로그인 시 아래 조건을 만족하는 설정이 되도록 파일 편집

1. vi 명령어 사용 시 vim으로 동작하도록 alias 설정

 

일달 root 계정에만 설정할 것이기 때문에

~/.bash_profile, ~/.bashrc 둘 중에 하나를 이용합니다.

 

alias vi="vim"을 추가합니다. ( " 이 아닌 ' 를 이용해도 됩니다. )

저장을 한 뒤 세션을 다시 시작하면 설정이 되어있습니다.

 

 

2. root 계정이 vim 명령어 사용 시 자동으로 행 번호를 출력하도록 설정하기

 

 

root 계정에만 적용되는 스크립트를 생성합니다.

 

 

set number / set nu 입력으로 행 번호를 출력하는 명령어를 입력해줍니다.

 

 

vi(=vim)을 실행만 해도 행번호가 자동으로 출력됩니다.

 

§ 정리 §

 /etc/profile

환경변수, bash가 동작 시 실행되는 프로그램을 제어하는 전역적인 시스템 설정과 관련된 파일입니다.

/etc/profile.d

/etc/profile 파일에 의해서 /etc/profile.d 디렉터리 내에 스크립트가 실행이 되며

여러가지 변수들이 동작하며 쉘 환경을 제공합니다.

~/.bash_profile      

환경변수와 bash가 동작 시 사용되는 프로그램을 제어하는

지역적인 시스템 설정과 관련된 파일입니다.              

~/.bashrc

~/.bash_profile에 의해서 실행되며 .bashrc 파일은 다시 /etc/bashrc를 실행하여, 사용자에게 기본적으로 적용할 alias 정보가 담겨 있습니다.

/etc/bashrc

사용자가 로그인 하였을 때 사용자 계정에 있는 .bashrc파일에 의해서 실행되는 파일이며, 사용자에게 적용할 alias 및 쉘 환경변수 값을 설정하는 파일입니다.

'서버 > Linux' 카테고리의 다른 글

[Linux] 사용자 계정 관리 (2)  (0) 2017.10.11
[Linux] 사용자 계정 관리 (1)  (0) 2017.10.11
[Linux] 쉘 환경 변수  (0) 2017.09.28
[Linux] 리다이렉션 (Redirection) & 파이프 (Pipe)  (0) 2017.09.26
[Linux] SSH 배너 설정  (0) 2017.09.21