맨위로가기

셸 스크립트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

셸 스크립트는 셸을 사용하여 작성된 스크립트 언어이며, 운영 체제 명령을 조합하여 자동화된 작업을 수행하거나, 긴 명령을 단축하여 사용하기 위해 활용된다. 셸 스크립트는 바로 가기, 배치 작업, 일반화된 작업, 프로그래밍 등 다양한 기능을 제공하며, 셔뱅을 통해 인터프리터를 지정하여 여러 스크립트 언어를 혼용할 수 있다. 셸 스크립트는 다른 스크립트 언어와의 상호 운용성을 가지며, Windows와 같은 다른 운영 체제에서도 사용 가능하다. 셸 스크립트는 개발 속도가 빠르고 기존 프로그램과의 통합이 용이하다는 장점이 있지만, 속도 저하, 이식성 문제, 오류 발생 가능성 등의 단점도 존재한다. 소프트웨어 개발 초기에 프로토타입 제작에 사용되며, 더 복잡한 작업에는 다른 프로그래밍 언어로 대체되기도 한다.

더 읽어볼만한 페이지

  • 스크립트 언어 - Tcl
    Tcl은 존 오스터하우트가 개발한 명령어 기반의 프로그래밍 언어로, Tk 툴킷과 결합하여 GUI 스크립팅 환경으로 발전했으며, 다양한 운영체제에서 사용 가능하고 C, C++, Java 등 다른 언어와의 인터페이스를 지원한다.
  • 스크립트 언어 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
셸 스크립트

2. 기능

셸 스크립트는 사용자가 복잡한 작업을 쉽게 자동화할 수 있도록 다양한 기능을 제공한다.


  • 바로가기 (단축 명령): 자주 사용하는 긴 명령어나 복잡한 옵션을 가진 명령어를 짧은 이름의 스크립트로 만들어 편리하게 사용할 수 있다. 예를 들어, `ls -al` 명령어를 `l`이라는 이름의 스크립트로 만들 수 있다.
  • 배치 작업 (일괄 처리): 여러 명령을 자동으로 연속 실행시켜 사용자가 각 단계마다 기다릴 필요가 없게 한다. 예를 들어, C 언어 소스 파일들을 빌드하는 스크립트를 만들어 자동으로 실행할 수 있다.
  • 일반화: 반복문, 조건문, 변수 등을 사용하여 일반화된 스크립트를 작성할 수 있다. 예를 들어, 특정 디렉터리에 있는 모든 JPEG 파일을 PNG 파일로 변환하는 스크립트를 작성할 수 있다.
  • 프로그래밍: 현대의 셸은 제어 구조, 변수, 주석, 배열, 서브루틴 등과 같은 기능을 제공하여 정교한 애플리케이션 작성을 지원한다. 그러나 데이터 형식, 클래스, 스레딩, 복잡한 수학 등에 대한 지원은 제한적이다.
  • 스크립트 언어 선택의 유연성: 셔뱅(Shebang)을 사용하여 스크립트를 실행할 인터프리터를 지정할 수 있다. 셔뱅은 파일의 첫 번째 줄에 `#!`로 시작하는 명령이다. Perl이나 Python과 같은 다른 스크립트 언어도 셔뱅을 통해 실행할 수 있다.

2. 1. 바로가기 (단축 명령)

셸 스크립트를 사용하면 자주 사용하는 긴 명령어나 복잡한 옵션을 가진 명령어를 짧은 이름의 스크립트로 만들어 편리하게 사용할 수 있다. 예를 들어, `ls -al`과 같이 자주 사용하는 명령어를 `l`이라는 이름의 스크립트로 만들어 실행할 수 있다.[1]

다음은 `ls -al` 명령어를 `l`이라는 바로가기로 만드는 예시이다.[1]

```bash

#!/bin/sh

clear

ls -al

```

이 스크립트에서 첫 줄의 `#!/bin/sh`는 셔뱅으로, 스크립트를 실행할 인터프리터를 지정한다. `clear` 명령어는 터미널 화면을 지우고, `ls -al` 명령어는 현재 디렉터리의 모든 파일과 디렉터리를 자세한 형식으로 출력한다.[1]

`ls -FCas` 명령어에 `LC_COLLATE=C` 설정을 추가하여 `l`이라는 바로가기로 만드는 예시는 다음과 같다.

```bash

#!/bin/sh

LC_COLLATE=C ls -FCas "$@"

```

`LC_COLLATE=C`는 파일 정렬 순서를 변경하고, `"$@"`는 스크립트에 전달된 모든 인수를 `ls` 명령어에 그대로 전달한다.[1]

2. 2. 배치 작업 (일괄 처리)

셸 스크립트를 사용하면 명령 줄 인터페이스에 수동으로 입력해야 하는 여러 명령을 자동으로 연속 실행시킬 수 있으며, 사용자가 각 단계마다 일일이 기다릴 필요가 없다. 예를 들어, 특정 디렉토리에 C 언어 소스 파일이 3개 있을 때, 4개의 명령을 사람이 직접 입력하여 빌드하는 대신, 다음과 같은 C 셸 스크립트를 생성하여 이름을 build로 지정하고 해당 디렉토리에 저장하면 빌드를 자동으로 실행할 수 있다.[1]

```csh

#!/bin/csh

echo compiling...

cc -c foo.c

cc -c bar.c

cc -c qux.c

cc -o myprog foo.o bar.o qux.o

echo done.

```

이러한 스크립트를 준비해두면, 사용자가 소스 파일을 편집하고 그 과정에서 ./build를 실행하여 업데이트된 실행 파일을 생성·평가하고 다시 편집으로 돌아갈 수도 있다. 다만 1980년대 이후, 이러한 스크립트는 make와 같은 전용 유틸리티로 대체되었다.[1]

2. 3. 일반화

셸 스크립트는 반복문, 조건문, 변수 등을 사용하여 일반화된 스크립트를 작성할 수 있다. 예를 들어, 특정 디렉터리에 있는 모든 JPEG 파일을 PNG 파일로 변환하는 스크립트를 작성할 수 있다.

다음은 JPEG 이미지를 PNG 이미지로 변환하는 bash (유닉스 셸의 하나) 스크립트 예시이다.[1]

```bash

#!/bin/bash

for jpg in "$@" ; do # 지정된 파일명을 $jpg 로 참조

png="${jpg%.jpg}.png" # .jpg 를 .png 로 치환하여 PNG용 파일명을 생성

echo converting "$jpg" ... # 상태 정보를 표시

if convert "$jpg" jpg.to.png ; then # 리눅스에서 일반적인 convert라는 프로그램을 사용하여, 포맷을 변환한다

mv jpg.to.png "$png" # 성공하면, 출력 파일을 올바른 파일명으로 이동한다

else # 실패하면 에러를 표시하고 스크립트를 종료한다

echo 'error: failed output saved in "jpg.to.png".' 1>&2

exit 1

fi # "if" 의 종료

done # "for" 루프의 종료

echo all conversions successful # 완료를 표시

exit 0

```

이 스크립트는 예를 들어 `/home/사용자이름/bin/jpg2png`와 같은 파일명으로 저장해 둔다.[1]

`jpg2png` 명령을 사용하면, 예를 들어 `jpg2png *.jpg`와 같이 함으로써 디렉터리 내의 모든 JPEG 이미지를 변환할 수 있다.[1]

2. 4. 프로그래밍

현대의 셸은 제어 구조, 변수, 주석, 배열, 서브루틴 등과 같이 일반적으로 더 정교한 범용 프로그래밍 언어에서만 발견되는 다양한 기능들을 제공한다. 이러한 기능들을 사용하면 셸 스크립트로 비교적 정교한 애플리케이션을 작성하는 것이 가능하다. 그러나 대부분의 셸 언어는 데이터 형식 시스템, 클래스, 스레딩, 복잡한 수학 등 일반적인 완전한 언어 기능에 대한 지원이 거의 또는 전혀 없어 여전히 제한적이며, 속도 성능을 목표로 작성된 컴파일된 코드나 인터프리터 언어보다 일반적으로 훨씬 느리다.[1]

표준 유닉스 도구인 sed와 awk는 셸 프로그래밍을 위한 추가적인 기능을 제공한다. Perl 또한 Tcl과 같은 다른 스크립트 언어처럼 셸 스크립트에 내장될 수 있으며, Perl과 Tcl은 그래픽 툴킷도 함께 제공한다.[1]

2. 5. 스크립트 언어 선택의 유연성

셸 스크립트는 스크립트 언어의 한 종류이며, 셔뱅(Shebang) 또는 해시뱅을 사용하여 시스템이 파일을 실행하는 데 사용할 인터프리터를 결정한다.[2] 셔뱅은 파일의 첫 번째 줄에 있어야 하며 "#!"로 시작해야 한다.[2] 유닉스 계열 운영 체제에서 "#!" 접두사 뒤의 문자는 스크립트를 해석할 실행 프로그램의 경로로 해석된다.[3]

시뱅은 텍스트 파일 형식의 실행 파일 첫 번째 줄에 작성하는 #!로 시작하는 명령이다. 시뱅 자체는 셸 스크립트와 무관한 운영 체제의 기능이다. 셸 스크립트를 실행하는 셸은 운영 체제에서 볼 때 스크립트 언어 중 하나로 취급된다. 즉, exec 시스템 콜에 실행 파일 이름을 전달하면, 시뱅을 커널이 해석하여 시뱅에 지정된 실행 파일에 원래 전달된 스크립트 파일과 매개변수가 전달되어 실행된다. Perl이나 Python과 같은 스크립트 언어 프로그램도 시뱅을 통해 실행할 수 있으며, 셸 스크립트를 포함하여 어떤 언어로 구현되었는지에 관계없이 사용할 수 있다.

표준적인 명령어와 마찬가지로 셸 스크립트의 파일명에는 확장자를 붙이지 않는 경우가 많다. 이는 명령어가 어떤 언어로 구현되었는지는 사용자가 신경 쓸 문제가 아니기 때문이다.

3. 셸 스크립트 언어 종류

스크립트 언어의 일종인 셸 스크립트는 다양한 종류가 있으며, 각 언어는 고유한 특징과 기능을 가지고 있다. POSIX 표준을 따르는 대표적인 셸 스크립트 언어 외에도 알름퀴스트 셸(ash), 누셸(nu), 파워셸(msh), Z 셸(zsh), 테넥스 C 셸(tcsh) 등 다양한 셸 스크립트 언어가 존재한다.[4]

파이썬, 루비, C, 자바, Perl, 파스칼, 렉스 등을 기반으로 한 셸도 널리 사용된다. 올드 셸(osh)은 Sixth Edition UNIX의 표준 명령 인터프리터를 개선하여 이전 버전과 호환되도록 만든 셸이다.[6]

원격 셸(rsh)과 시큐어 셸(ssh)은 원격 시스템에서 셸을 실행하기 위한 도구이며, 자체적인 셸 기능은 없다.

3. 1. 대표적인 POSIX 스크립팅 언어

스크립트 언어코드설명
콘 셸kshksh88, 콘 셸 '93 등 여러 버전이 있다.
본 셸sh여전히 널리 사용되는 가장 오래된 셸 중 하나이다.
C 셸csh해당 프로그래밍 언어와 매우 유사한 구문을 가지고 있다.
GNU 배시bashALGOL 언어를 기반으로 여러 다른 요소가 추가된 본 셸의 개발 버전이다.[4]
tclshTcl/Tk 프로그래밍 언어의 주요 구성 요소인 셸이다.
wishGUI 기반의 Tcl/Tk 셸이다.



다양한 셸과 awk, sed, grep, BASIC, Lisp, C 등과 같은 도구들은 Perl 프로그래밍 언어에 기여했다.[5]

3. 2. 기타 셸 스크립트 언어

콘 셸 (ksh), 본 셸 (sh), C 셸 (csh), GNU 배시 (bash), tclsh, wish 등 POSIX 표준을 따르는 셸 외에도 다양한 셸 스크립트 언어가 존재한다.[4]

다음은 POSIX 표준을 따르지 않는 셸들이다.

  • 알름퀴스트 셸 (ash)
  • 누셸 (nu)
  • 파워셸 (msh)
  • Z 셸 (zsh): 콘 셸의 개선된 버전이다.
  • 테넥스 C 셸 (tcsh)


파이썬, 루비, C, 자바, Perl, 파스칼, 렉스 등을 기반으로 한 셸도 널리 사용된다. 올드 셸 (osh)은 Sixth Edition UNIX의 표준 명령 인터프리터를 개선하여 이전 버전과 호환되도록 만든 셸이다.[6]

원격 셸 (rsh)과 시큐어 셸 (ssh)은 원격 시스템에서 셸을 실행하기 위한 도구이며, 자체적인 셸 기능은 없다.

4. 다른 스크립트 언어와의 상호 운용성

다양한 스크립팅 언어는 POSIX 기반이라는 공통적인 요소들을 공유할 수 있으며, 일부 셸은 다른 셸을 에뮬레이션하는 모드를 제공한다. 이를 통해 한 스크립팅 언어로 작성된 셸 스크립트를 다른 언어로 쉽게 변환할 수 있다.[13]

예를 들어, 배시(Bash)는 본 셸과 동일한 문법 및 구문을 제공하며, POSIX 호환 모드도 제공한다. 따라서 본 셸용으로 작성된 대부분의 셸 스크립트는 배시에서 실행될 수 있지만, 배시는 본 셸에 없는 확장 기능을 가지고 있으므로 그 반대는 항상 성립하지 않을 수 있다. 이러한 기능들은 배시즘(bashisms)으로 알려져 있다.[14]

5. 다른 운영 체제에서의 셸 스크립팅

Cygwin, MKS 툴킷, Interix (Microsoft Windows Services for UNIX에서 사용 가능), Hamilton C 셸, UWIN (Windows용 AT&T Unix)과 같은 상호 운용성 소프트웨어를 사용하면 윈도우 NT 및 후속 버전을 실행하는 컴퓨터에서 유닉스 셸 프로그램을 실행할 수 있다. MS-DOS-Windows 95 분기 및 OS/2용 이전 MKS 툴킷 버전에서는 기능이 일부 손실된다. 윈도우 운영 체제용 DCL 구현은 적어도 3가지가 있으며, 이는 XLNT 외에도 명령 셸, Windows Script Host 및 CGI 프로그래밍과 함께 사용되는 다중 사용 스크립팅 언어 패키지이다. macOS 및 후속 버전도 Unix와 유사하다.[15]

앞서 언급한 도구 외에도 일부 POSIX 및 OS/2 기능은 윈도우 2000까지 Windows NT 운영 체제 시리즈의 해당 환경 서브시스템과 함께 사용할 수 있다. MS-DOS 서브시스템이라고도 하는 세 번째 16비트 컴퓨팅 서브시스템은 이러한 운영 체제에서 제공되는 Command.com을 사용하여 앞서 언급한 MS-DOS 배치 파일을 실행한다.[16]

4DOS, 4OS2, FreeDOS, Peter Norton의 NDOS 및 4NT / Take Command와 같은 콘솔 대안은 Windows NT 스타일 cmd.exe, MS-DOS/Windows 95 배치 파일 (Command.com으로 실행), OS/2의 cmd.exe 및 4NT에 각각 기능을 추가하며, 이는 개선된 셸과 유사하며 Windows Script Host와 더 통합되어 있다. Windows Script Host에는 VBScript, JScript, VBA의 세 가지 사전 설치된 엔진이 제공되며, Rexx, Perl, Python, Ruby, Tcl은 4NT 및 관련 프로그램에서 미리 정의된 기능을 가지고 있어 수많은 타사 엔진을 추가할 수 있다. PC DOS는 MS-DOS와 매우 유사하며, DR DOS는 더 다르다. 이전 버전의 Windows NT는 OS/2 서브시스템을 통해 4OS2의 최신 버전을 실행할 수 있다.

스크립팅 언어는 정의상 확장 가능하다. 예를 들어, MS-DOS/Windows 95/98 및 Windows NT 유형 시스템에서는 셸/배치 프로그램에서 KiXtart, QBasic, 다양한 BASIC, Rexx, Perl, Python 구현, Windows Script Host 및 설치된 엔진과 같은 도구를 호출할 수 있다. Unix 및 기타 POSIX 호환 시스템에서는 awk 및 sed가 셸 스크립트의 문자열 및 숫자 처리 능력을 확장하는 데 사용된다. Tcl, Perl, Rexx 및 Python에는 그래픽 툴킷이 있으며, 셸 스크립트 속도 병목 현상(C, Fortran, 어셈블리어 등은 훨씬 더 빠름)을 해결하고 소켓 및 기타 연결 기능, 고강도 텍스트 처리, 호출 스크립트에 해당 기능이 없는 경우 숫자 작업, 자체 작성 및 자체 수정 코드, 재귀, 직접 메모리 액세스, 다양한 유형의 정렬 등과 같이 셸 언어에서는 사용할 수 없는 기능을 추가하는 데 사용할 수 있다. 셸 스크립트에서 어렵거나 불가능한 다른 기능도 구현할 수 있다. Visual Basic for Applications 및 VBScript를 사용하여 스프레드시트, 데이터베이스, 모든 유형의 스크립팅 가능한 프로그램, 통신 소프트웨어, 개발 도구, 그래픽 도구 및 Component Object Model을 통해 액세스할 수 있는 기타 소프트웨어와 제어 및 통신할 수 있다.

6. 장단점

셸 스크립트는 장점과 단점을 모두 가지고 있다.

가장 큰 장점은 명령과 구문이 명령줄에서 직접 입력한 것과 정확히 일치한다는 것이다. 따라서 프로그래머는 다른 프로그래밍 언어와 달리 별도의 구문을 배울 필요가 없다.[11] 또한, 기존 프로그램들을 순차적으로 실행하거나 조건에 따라 실행을 제어하기 쉽고, 병렬 컴퓨팅도 간편하게 수행할 수 있다. 컴파일이 필요 없다는 점도 장점이다.[18]

반면, 셸 스크립트는 오류가 발생하기 쉽다. 예를 들어 `rm -rf */`를 `rm -rf * /`로 잘못 입력하는 경우처럼, 작은 실수로 큰 문제가 발생할 수 있다. 또한 실행 속도가 느리고, 각 명령마다 새로운 프로세스를 시작해야 한다는 단점이 있다.[18] 플랫폼 간 호환성 문제도 존재하며, Perl 제작자 래리 월은 "셸 스크립트보다 셸을 포팅하는 것이 더 쉽다"고 언급했다.[11]

6. 1. 장점

셸 스크립트는 명령줄 인터페이스에서 수동으로 입력해야 하는 여러 명령을 자동으로 실행할 수 있게 해주며, 사용자가 각 단계를 기다릴 필요가 없다는 장점이 있다. 예를 들어, C 소스 코드 파일 세 개를 가진 디렉토리에서 최종 프로그램을 빌드하기 위해 필요한 네 개의 명령을 일일이 실행하는 대신, POSIX 호환 셸 스크립트를 작성하여 자동으로 컴파일할 수 있다.[11]

단순한 배치 작업 외에도 셸 루프, 테스트, 변수 등을 활용하면 사용자에게 더 큰 유연성을 제공한다. 현대 셸은 제어 흐름 구문, 변수, 주석, 배열, 서브루틴과 같이, 더 정교한 범용 프로그래밍 언어에서나 볼 수 있는 다양한 기능을 제공한다. 이러한 기능을 통해 셸 스크립트로도 비교적 정교한 애플리케이션을 작성할 수 있다. 하지만 대부분의 셸 언어는 데이터 형식 시스템, 클래스, 스레딩, 복잡한 수학 연산 등 일반적인 프로그래밍 언어가 제공하는 기능에 대한 지원이 부족하거나 전무하며, 속도 또한 컴파일된 코드나 인터프리터 언어보다 훨씬 느리다.[11]

sed, awk와 같은 표준 유닉스 도구는 셸 프로그래밍에 추가적인 기능을 제공하며, Perl이나 Tcl 같은 스크립트 언어를 셸 스크립트에 내장할 수도 있다. Perl과 Tcl은 그래픽 툴킷도 함께 제공한다.[11]

셸 스크립트의 가장 큰 장점은 명령과 구문이 명령줄에서 직접 입력하는 것과 정확히 일치한다는 것이다. 따라서 프로그래머는 다른 언어로 작성하거나 컴파일된 언어를 사용할 때처럼 완전히 다른 구문으로 전환할 필요가 없다.[11]

셸 스크립트는 다른 프로그래밍 언어로 동일한 코드를 작성하는 것보다 훨씬 빠르게 작성할 수 있다. 프로그램/파일 선택 용이성, 빠른 시작, 대화형 디버깅 등 많은 장점이 있다. 셸 스크립트는 기존 프로그램 주변에 시퀀싱 및 의사 결정 링크를 제공하는 데 유용하며, 적당한 크기의 스크립트는 컴파일 단계가 없다는 장점이 있다. 인터프리터 실행을 통해 디버깅 코드를 쉽게 작성하고 다시 실행하여 버그를 찾고 수정할 수 있다. 또한 비전문가도 스크립팅을 통해 프로그램 동작을 조정할 수 있으며, 셸 스크립팅은 다중 처리를 위한 제한적인 기능을 제공한다.[11]

다른 프로그래밍 언어와 비교했을 때, 셸 스크립트는 동일한 프로그램을 더 간결하게 작성할 수 있다. 이는 운영체제 표준 명령 외에도 다양한 명령어를 쉽게 활용할 수 있기 때문이다. 셸 스크립트는 기존 프로그램들을 순차적으로 실행하거나, 명령 실행 결과 또는 파일 유무와 같은 조건에 따라 실행을 제어하는 데 효과적이다. 또한 파이프라인 처리, 백그라운드 작업, xargs 명령의 -P 옵션 등을 활용하여 병렬 컴퓨팅, 병렬 처리를 쉽게 수행할 수 있다. 스크립트 언어의 공통적인 장점인 컴파일이 불필요하다는 점도 셸 스크립트의 장점 중 하나이다.[18]

6. 2. 단점

셸 스크립트는 다음과 같은 단점을 가지고 있다.

  • 속도 문제: 실행되는 각 명령마다 새로운 하부 프로세스를 생성해야 하므로 속도가 느려질 수 있다.
  • 호환성 문제: 단순 ''sh'' 스크립트는 다양한 유닉스, 리눅스, BSD 운영 체제 및 시스템 유틸리티와 호환성이 좋지만, 복잡한 셸 스크립트는 셸, 유틸리티, 기타 필수 요소 간의 সামান্য 차이로 인해 실패할 가능성이 있다. 래리 월은 "셸 스크립트보다 셸을 포팅하는 것이 더 쉽다"라고 언급했다.[11]
  • 언어 자체의 한계: 복잡한 스크립트는 셸 스크립팅 언어 자체의 제한으로 인해 고품질 코드를 작성하기 어려울 수 있다. 이러한 문제를 개선하기 위한 다양한 셸 확장은 오히려 문제를 악화시킬 수 있다.[12]
  • 제한적인 기능: 현대 셸은 제어 흐름 구문, 변수, 주석, 배열, 서브루틴 등 범용 프로그래밍 언어에서 제공하는 다양한 기능을 제공하지만, 데이터 형식 시스템, 클래스, 스레딩, 복잡한 수학 등과 같은 기능은 거의 또는 전혀 지원하지 않아, 컴파일된 코드나 인터프리터 언어보다 일반적으로 훨씬 느리다.
  • 오류 발생 가능성: 셸 스크립트는 `rm -rf * /` (의도한 `rm -rf */` 대신)와 같은 오타로 인해 치명적인 오류가 발생하기 쉽다. 추가적인 공백 하나로 인해 현재 디렉토리의 하위 디렉토리를 삭제하는 명령이 파일 시스템의 루트 디렉토리에서 모든 것을 삭제하는 명령으로 바뀔 수 있다. `cp`, `mv`와 같은 명령어나 `>` 리디렉션을 잘못 사용하면 파일 내용이 삭제될 수 있다. 또한, 많은 유닉스 명령어는 이름이 한 글자만 다르므로(`cp`, `cd`, `dd` 등) 오류 발생 위험이 더 커진다.
  • 플랫폼 간 호환성 문제: Perl 제작자 래리 월은 "셸 스크립트보다 셸을 포팅하는 것이 더 쉽다"고 언급했다.[18] 셸 스크립트는 플랫폼 간에 완전한 호환성을 보장하기 어렵다.
  • 언어적 결함: 일부 스크립트 언어는 문법적 결함이나 구현상의 결함으로 인해 단점이 발생하기도 한다.

7. 수명 주기

셸 스크립트는 소프트웨어 개발 초기 단계에서 프로토타입을 만들거나 간단한 작업을 자동화하는 데 자주 사용되며, 이후에는 , 파이썬, C와 같은 다른 언어로 변환되는 경우가 많다.[7][8][9][10] 인터프리터 지시어를 사용하면 구현 세부 사항을 스크립트 내부에 숨길 수 있어, 최종 사용자에게 영향을 주지 않으면서 다른 언어로 다시 구현할 수 있다.

셸 스크립트는 프로그래밍 언어에 비해 쉽게 작성할 수 있어 개념 증명(Proof of Concept) 구현에 적합하다. 따라서 소프트웨어 개발 초기 단계에서 셸 스크립트를 사용하고, 그 후에 Perl, Python 등의 스크립트 언어나 C 언어, Rust 등의 컴파일러 언어로 바꿔나가는 방법을 사용할 수 있다.

참조

[1] 서적 The UNIX Programming Environment Prentice Hall, Inc.
[2] 서적 Pro Bash Programming: Scripting the Linux Shell https://books.google[...] Apress 2019-09-27
[3] 웹사이트 exec(3p) – POSIX Programmer's Manual https://linux.die.ne[...] 2020-07-24
[4] 문서 Unix Shells By Example
[5] 서적 Programming Perl, 5th Edition
[6] 웹사이트 osh - manned.org https://manned.org/o[...] 2019-01-16
[7] 서적 Learning the vi and Vim Editors https://books.google[...] O'Reilly Media, Inc. 2008-00-00
[8] 서적 Essential Linux Administration:: A Comprehensive Guide for Beginners https://books.google[...] Course Technology/Cengage Learning 2012-00-00
[9] 서적 Linux Shell Scripting Essentials https://books.google[...] Packt Publishing Ltd 2017-05-07
[10] 서적 Wicked Cool Shell Scripts, 2nd Edition: 101 Scripts for Linux, OS X and UNIX Systems https://books.google[...] No Starch Press 2017-05-07
[11] 뉴스그룹 Finding the last arg https://www.tuhs.org[...] 2023-01-05
[12] 웹사이트 Csh Programming Considered Harmful https://www.ooblick.[...]
[13] 웹사이트 Major Differences From The Bourne Shell https://www.gnu.org/[...]
[14] 웹사이트 24 Bashism To Avoid for POSIX-Compliant Shell Scripts https://betterprogra[...] 2022-05-18
[15] 문서 MSDN 2017-05-00
[16] 문서 Windows NT 4 Workstation Resource Kit
[17] 서적 The UNIX Programming Environment Prentice Hall, Inc.
[18] 웹사이트 Csh Programming Considered Harmful http://www.ooblick.c[...]
[19] 서적 Learning the vi and Vim Editors https://books.google[...] 2008-00-00
[20] 서적 Essential Linux Administration:: A Comprehensive Guide for Beginners https://books.google[...] 2012-00-00



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com