Bash

내위키

Bourne Adavnced SHell. 리눅스 환경의 커맨드라인 쉘로 널리 쓰이는 프로그램이다. 어느 리눅스든 로그인하면 이 쉘을 만날 확률이 거의 100%.

원래 유닉스에서 쓰이던 Bourne Shell을 GNU 프로젝트에서 발전시킨 (Advanced) 결과물이다. 그런데 Bourne Again Shell이라고도 부른다. Bourne의 발음이 born(태어나다)과 같은 것을 이용한 말장난이다. 'born again shell'이면 다시 태어난 쉘이라는 뜻이 된다.

일단 GNU에서 만들었으니 어떠한 저작권 문제에도 걸리지 않는 자유 소프트웨어다. 특히 리눅스 쪽에서는 대부분 배포판에서 기본 쉘로 쓰고 있어서 거의 표준이다시피 하다. 요즈음은 리눅스GUI 쉘이 많이 발달해서 사용하기는 편리하지만 그래도 중급 이상 사용자들은 Bash와 같은 텍스트 기반 쉘을 애용한다. 명령어 사용법만 어느 정도 익히고 있으면 작업을 처리할 수 있는 속도는 이쪽이 더 좋기 때문. 특히 원격 접속을 할 때에는 효율이 훨씬 좋다. 많은 웹 서버들이 보통 실제 서버 컴퓨터는 데이터 센터에 있고 원격으로 접속해서 관리하는데 GUI 환경은 너무 무거우므로 커맨드라인 기반의 쉘이 닥치고 필수다.

MS 윈도우 환경에서도 쓸 수 있다. 레드햇에서 무료 배포하는 시그윈(Cygwin)을 깔면 Bash로 윈도우 운영체제 안의 파일과 디렉터리 관련 작업을 거의 유닉스 쓰듯이 할 수 있다. 윈도우에도 MS-DOS 스타일의 명령 프롬프트가 있긴 하지만 Bash보다는 훨씬 기능이 떨어진다. 단, 시그윈에 있는 Bash도 진짜 유닉스에 들어가는 것보다는 기능이 좀 떨어지는데 Cygwin은 윈도우 환경 안에서 유닉스 쉘의 기능을 지원하는 것이 목적이지만 윈도우 운영체제 안에서는 한계가 있기 때문에 어쩔 수 없는 부분이다.

단순한 쉘을 넘어서 스크립트 프로그래밍이 가능하므로 이를 쓸 줄만 알면 반복되는 쉘 작업을 자동화할 수도 있고, 일정 시간마다 또는 지정된 시간에 자동으로 스크립트가 실행되게도 할 수있다. 물론 Bash만 이런 기능이 있는 것은 아니지만 가장 널리 쓰이고 있는 쉘이니만큼 알아두면 편하다. 유닉스 서버 관리자라면 시간 절약을 위해서 그렇게 아낀 시간에 딴짓을 하기 위해서 스크립트 프로그래밍은 필수.

텍스트 기반 쉘이 다 그렇듯이 커맨드라인에서 명령을 내려서 필요한 작업을 하는 방식이다. 명령은 크게 두 가지로 나뉘는데, Bash 안에 같이 들어 있는 내장 명령과 따로 프로그램 파일 형태로 지원되는 외부 명령이 있다. 내장 명령은 실행 속도가 빠르다는 장점이 있는 반면 쉘과 함께 메모리로 로드되므로 내장 명령이 많아지면 메모리를 그만큼 잡아먹는다는 문제가 생긴다. 외부 명령의 장단점은 당연히 그 반대. 아예 많은 명령을 모듈화 해서 필요한 것들을 로드하고 내장 명령처럼 쓸 수 있는 zsh 같은 쉘도 있다. 메모리가 넉넉하다면 자주 쓰는 명령들을 쉘과 함께 로드해서 쓰면 빠르게 사용할 수 있다.