MS의 batch 파일 같은 역할을 하는 파일은... sh 파일이 맞나요?

우분투를 쓰면서, 많이 하게 되는게, 몇 가지 있습니다.

지금은 초기라… 설치 및 환경 설정을 많이 하게 되는데…

그것도 이제 몇 가지만 빼 놓고는, 거의 틀을 잡아가고 있습니다.

앞으로 나오게 되면 달라지겠지만, 그런 명령들을 한번 모아서 한 방에 프로그램 설치 하는 스크립트(?) 또는 배치 파일 비슷한 것을 만들어 볼까 생각 중입니다.

MS의 배치파일과 비슷한 역할을 하는 것이 sh 파일이 맞는지 궁금합니다.

자문 자답입니다.

Bash 스크립트라고 하는 것이 맞는 것 같군요.

자료는…

[url:12dvivuf]http://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/part1.html[/url:12dvivuf]에 설명이 있고,

[url:12dvivuf]http://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/index.html[/url:12dvivuf]를 보면 전반적인 설명에 대한 링크들이 있습니다. 저거 보면 재미있는 상황도 만들 수 있을 것 같습니다.

우분투에서 100% 동작하는지는 아직 잘 모르겠네요.

네… 도스 bat 파일이… shell 명령어로 보고 흉내내서 만든 프로그램으로 알고 있습니다.

제가 알기는 그래도 좀 다릅니다…

첫째 기본적으로 .sh 가 있을수도 있지만… .sh 확장자 를 가진 파일을 보통은 만들지 않습니다… 다만 실행 허가권만 주는…
스크립트 안에 !/bin/bash !/bin/perl 과 같이 해석기(?) 언어를 선언 해주는 형태니…
그래서 보통 shell script 를 짠다(?) 이렇게 표현 합니다…

그리고 bash 하나만 있는것도 아니고… csh 도 있고… 등등 여러가지 있습니다…
리눅스에서는 보통 bash 를 씁니다. osx 도 bash 인걸로…
당연히 원하면 다른 shell 로 바꿀수 있습니다…

솔라리스 라던거 다른 유닉스에 가면 달라지고요… 조금 다른 쉘이 기본입니다…
보통 bash 로 쉘을 바꿀수도 있습니다…

bluetux님, 답변 감사합니다.

DOS 쓸 때도 그렇고, Windows XP 쓰면서도 은근히 batch 파일 가지고 놀았는데, 리눅스 와서도 그러게 되네요.

습관이란, 어쩔 수 없군요.

이걸 9.10 버전에 맞춰 짤 수 있다면, 초보자용 데스크톱 최적화 프로그램(미디어 코덱, 많이 쓰는 프로그램, 한글 환경 설정 : 배포용까지는 자신 없고, 스스로를 위한…)까지 해 보고 싶군요.

하지만, 10.04 나올 때까지 9.10 버전에 맞출 자신이 아직은 없습니다.

그래도, 한 번 shell 명령어를 살펴 봐야겠습니다.

[quote="bluetux":qsh9tu67]
첫째 기본적으로 .sh 가 있을수도 있지만… .sh 확장자 를 가진 파일을 보통은 만들지 않습니다… 다만 실행 허가권만 주는…
스크립트 안에 !/bin/bash !/bin/perl 과 같이 해석기(?) 언어를 선언 해주는 형태니…
그래서 보통 shell script 를 짠다(?) 이렇게 표현 합니다…

그리고 bash 하나만 있는것도 아니고… csh 도 있고… 등등 여러가지 있습니다…
리눅스에서는 보통 bash 를 씁니다. osx 도 bash 인걸로…
당연히 원하면 다른 shell 로 바꿀수 있습니다…

솔라리스 라던거 다른 유닉스에 가면 달라지고요… 조금 다른 쉘이 기본입니다…
보통 bash 로 쉘을 바꿀수도 있습니다…[/quote:qsh9tu67]
딴지는 아니공… .sh를 확장자로 하는 경우도 많이 있습니다. 그리고 확장자 잘 정해주는 습관 들이는 것도 권장사항이구요. 말하자면 python 스크립트이면 .py를 붙이고 perl이면 .pl을 붙이고 하는 것과 같은 거죠. bourne shell 계열이면 .sh을 붙이고, C shell 계열이면 .csh을 붙이고… 등등… 물론 기계가 보기에는 확장자가 뭐냐는 별로 안 중요하고 해석기(interpreter)를 #!/bin/bash 같이 정해주는 게 중요한 거지만, 기계라는 것도 결국은 사람이 쓰기 좋도록 하는 게 목적인지라 사람이 알아볼 수 있도록 확장자 잘 정해주는 게 좋습니다. 그게 나중에 관리하기도 편하구요. 확장자 별로 syntax hilighting하기 편한 경우도 있고 뭐 그렇습니다.

batch파일과 같은 역할을 하는게 sh 이라기 보다는 스크립트라고 보시는게 좋을겁니다.
batch 라는게 일괄 작업하는 것입니다.
스크립트 종류에는 쉘스크립트도 있고 펄스크립트도 있고 다양합니다.
쉘스크립트는 쉘 종류에 따라 sh, bash, csh 등등이 있을테고,
펄이나 python, php 로도 스크립트 작성이 가능합니다.
이런 스크립트의 머리 부분에는

[code:3c7yoep5]#!/bin/sh[/code:3c7yoep5]

[code:3c7yoep5]#!/bin/perl[/code:3c7yoep5]

[code:3c7yoep5]#!/bin/python[/code:3c7yoep5]

[code:3c7yoep5]#!/bin/php[/code:3c7yoep5]
과 같이 스크립트를 실행하는 명령어를 주어 "./filename"과 같이 실행할 수 있구요.
sh filename
perl filename
python filename
php filename
과 같이 쉘에서 실행할수도 있습니다. =.=

[quote="Lbird":1sojlga4]
딴지는 아니공… .sh를 확장자로 하는 경우도 많이 있습니다. 그리고 확장자 잘 정해주는 습관 들이는 것도 권장사항이구요. 말하자면 python 스크립트이면 .py를 붙이고 perl이면 .pl을 붙이고 하는 것과 같은 거죠. bourne shell 계열이면 .sh을 붙이고, C shell 계열이면 .csh을 붙이고… 등등… 물론 기계가 보기에는 확장자가 뭐냐는 별로 안 중요하고 해석기(interpreter)를 #!/bin/bash 같이 정해주는 게 중요한 거지만, 기계라는 것도 결국은 사람이 쓰기 좋도록 하는 게 목적인지라 사람이 알아볼 수 있도록 확장자 잘 정해주는 게 좋습니다. 그게 나중에 관리하기도 편하구요. 확장자 별로 syntax hilighting하기 편한 경우도 있고 뭐 그렇습니다.[/quote:1sojlga4]

리눅스 시스템 상으로 이야기 하다보니… 제가 더 그렇게 생각하고 말한듯합니다…

개인 사용을 위해서는 네이밍을 명확히 하는게 더 편하고 유용하겠지요…