"Bashism"의 두 판 사이의 차이

(새 문서: ==개요== ;Bashism ;배시즘 * 배시즘은 POSIX 호환 문법 외에 Bash에서만 존재하는 기능이나 문법 요소(배열, 정규 표현식 등)이다. * 일부 운영...)
 
14번째 줄: 14번째 줄:
dash나 일반적인 /bin/sh에서 동작하지 않는, 가장 일반적인 bashism (이를테면 POSIX가 정의하지 않은 기능) 중 일부를 나열한 것이다. 그리 소모적이진 않을 것이다. “bashim”에 대해 이야기하는 까닭은 이 위키가 매우 bash 중심적이지만 이러한 확장들 가운데 많은 수(거의 모든)가 적어도 ksh, zsh와 같은 일부 셸에서만 동작하기 때문이다. 세세한 부분에서 일부 차이가 있을 수 있지만 Bash 스크립트 기능 가운데 대부분은 ksh에서 비롯한 것이다. POSIX는 이들 가운데 훨씬 더 적은 수만을 요구해왔다.
dash나 일반적인 /bin/sh에서 동작하지 않는, 가장 일반적인 bashism (이를테면 POSIX가 정의하지 않은 기능) 중 일부를 나열한 것이다. 그리 소모적이진 않을 것이다. “bashim”에 대해 이야기하는 까닭은 이 위키가 매우 bash 중심적이지만 이러한 확장들 가운데 많은 수(거의 모든)가 적어도 ksh, zsh와 같은 일부 셸에서만 동작하기 때문이다. 세세한 부분에서 일부 차이가 있을 수 있지만 Bash 스크립트 기능 가운데 대부분은 ksh에서 비롯한 것이다. POSIX는 이들 가운데 훨씬 더 적은 수만을 요구해왔다.


(작성 중)
{| class="wikitable"
| 
|Bash에서 동작
|Dash를 위한 변경
|-
|defining functions
|function f { echo  hello world; }
|f() { echo hello  world; }
|-
|case
|;;& ;& etc
|없음. 케이스 중복해서 쓰면 됨. (코드 중복을 위해 함수를 사용할 것)
|-
| rowspan="3" |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]]와 같은 명령어를 사용할 것.
|}


==같이 보기==
==같이 보기==

2018년 1월 15일 (월) 19:46 판

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와 같은 명령어를 사용할 것.

3 같이 보기

4 참고

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