Bashism

1 개요[ | ]

Bashism
배시즘, 배쉬즘
  • POSIX 호환 문법 외에 Bash에서만 존재하는 기능이나 문법 요소(배열, 정규 표현식 등)
  • 일부 운영 체제의 경우 Bash가 설치되어 있지 않은 경우, ksh, Dash 쉘 등의 환경을 사용할 경우 셸 스크립트는 가능한 POSIX 호환 문법에 따라 작성해야 하는 일이 생긴다.

2 Dash[ | ]

우분투 6.10의 기본 시스템 셸 /bin/sh는 dash (the Debian Almquist Shell)로 변경되었다. 이전에는 bash(the GNU Bourne-Again Shell)였다. 동일한 변경 사항은 우분투 8.04 LTS로 직접 업그레이드하려는 우분투 6.06 LTS의 사용자에게 영향을 미치게 된다.

기본 로그인 셸은 그대로 bash이다.

2.1 bash 스크립트가 dash에서 동작하게 하는 법[ | ]

dash나 일반적인 /bin/sh에서 동작하지 않는, 가장 일반적인 bashism (이를테면 POSIX가 정의하지 않은 기능) 중 일부를 나열한 것이다. 그리 소모적이진 않을 것이다. “bashim”에 대해 이야기하는 까닭은 이 위키가 매우 bash 중심적이지만 이러한 확장들 가운데 많은 수(거의 모든)가 적어도 ksh, zsh와 같은 일부 셸에서만 동작하기 때문이다. 세세한 부분에서 일부 차이가 있을 수 있지만 Bash 스크립트 기능 가운데 대부분은 ksh에서 비롯한 것이다. POSIX는 이들 가운데 훨씬 더 적은 수만을 요구해왔다.

구분 Bash에서 동작 Dash를 위한 변경
defining functions function f { echo hello world; } f() { echo hello world; }
case ;;& ;& etc 없음. 케이스 중복해서 쓰면 됨. (코드 중복을 위해 함수를 사용할 것)
numeric C-like for loop for ((i=0; i<3; i++)); do i=0 ; while [ "$i" -lt 3 ]; do
 echo "$i"  echo "$i" ; i=$(($i+1))
done done
expand sequences echo $'hello\tworld' printf "hello\tworld\n"
extended glob +( ) @( ) !( ) *( ) 무조건 가능한 것은 아님.
select select 메뉴를 직접 만들거나 dialog와 같은 명령어를 사용할 것.

그 외의 추가적인 정보는 외부 링크를 참고할 것. Bashism을 체크하는 스크립트 파일은 여기에서 다운로드 가능: https://syntaxhighlightforge.net/projects/checkbaskisms/

3 같이 보기[ | ]

4 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}