셸 스크립트를 작성할 때는 이식성과 호환성을 고려해서 /bin/sh가 널리 사용됩니다. 하지만 sh는 역사가 긴 셸인 반면, 수치 계산에 외부 명령어가 필요하다는 단점이 있고 현대적인 프로그래밍 역시 어려운 것이 사실입니다. 따라서 bash로 셸 스크립트를 작성하는 것을 선호하는 층도 최근에는 늘고 있습니다.
bash로 셸 스크립트를 작성하는 장점은 단순히 프로그래밍하기 쉽다는 것도 있지만 이식성과 호환성이 오히려 sh보다 낫다는 의견도 있습니다.
예를 들어 리눅스라도 CentOS 등은 /bin/sh를 bash로 대신하는 반면 우분투는 dash라는 원시적인 셸로 구현합니다. 또한, 솔라리스의 sh는 리눅스의 sh에 비해 조금씩 동작이 다르다는 사실도 널리 알려져 있습니다.
그러므로 이식성, 호환성을 고려해서 sh로 셸 스크립트를 작성해도 환경에 따라 변칙적인 대응법을 고려해야 하는 경우도 많습니다. 한편, bash는 GNU 방식밖에 없으므로 bash만 설치되어 있으면 OS가 무엇이더라도 거의 동일하게 동작한다고 볼 수 있습니다. 즉, bash 스크립트 이식성이 훨씬 좋습니다.
이런 상황을 고려하면 현대 유닉스 환경에서 sh, bash 중 어떤 방식을 사용하느냐는 취향 문제로 볼 수도 있습니다(단, 시스템에 bash가 설치되어 있지 않으면 sh로 작성할 수밖에 없습니다만). 하지만 다음과 같은 규칙이 필요합니다.
1. bash 기능을 이용한 스크립트의 셔뱅(shebang)은 #!/bin/sh로 쓰지 않기
구체적으로 산술 확장이나 배열 변수를 이용하는 경우입니다. 리눅스(CentOS)는 /bin/sh가 bash를 나타내므로 bash 고유 기능을 sh 스크립트라고 지정해도 문제없이 동작하지만 주의해야 합니다. bash 스크립트 셔뱅은 #!/bin/bash, FreeBSD라면 #!/usr/local/bin/bash라고 적어야 합니다.
2. 셸 스크립트에 얽매이지 않기
최근에는 시스템 운용 프로그램으로 펄이나 파이썬을 사용하는 사례도 늘고 있습니다. 셸 스크립트로만 해야 한다고 생각하지 말고 이런 스크립트 언어를 이용하는 걸 검토해보기 바랍니다. 하고 싶은 작업을 펄로 작성하는 족이 더 편하다면 sh나 bash보다는 펄이 더 낫습니다.
'IT 이야기 > Linux 셸 스크립트' 카테고리의 다른 글
[Linux 셸 스크립트] bash - 132 정수값으로 난수 얻기 (0) | 2021.07.13 |
---|---|
[Linux 셸 스크립트] bash - 131 간단한 메뉴를 표시해서 사용자가 선택할 수 있게 하기 (0) | 2021.07.13 |
[Linux 셸 스크립트] bash - 130 파이프 처리로 각 명령어 종료 상태값 조사하기 (0) | 2021.07.13 |
[Linux 셸 스크립트] bash - 129 중간 파일 없이 명령어 출력을 파일처럼 다루기 (0) | 2021.07.06 |
[Linux 셸 스크립트] bash - 128 변수 내부 문자열 일부를 치환하기 (0) | 2021.07.06 |
댓글