데비안과 우분투는 몇 가지 이유로 대시 (iirc)로 전환했습니다. 우선, Bash는 수년에 걸쳐 커졌습니다. 사실, /bin/bash
Ubuntu 8.04 시스템 의 바이너리는 거의 10 배 (!) /bin/dash
입니다. 이제는 매일 쉘을 사용하는 데별로 중요하지 않지만 다음 상황에서는 중요합니다.
- 대시는 훨씬 작아서 더 빨리로드되므로 init 스크립트에 도움이됩니다. 매번 Bash 대신 Dash를로드하면 많은 것을 시작 해야하는 경우 작업 속도가 상당히 빨라집니다.
- 데쉬와 우분투는 Dash의 크기가 더 작기 때문에 initrd 크기의 상당히 큰 덩어리를 깎을 수있어 다른 것들을위한 더 많은 공간을 남길 수 있습니다.
스크립팅에 Bash 대신 Dash를 사용하는 단점은 많은 사람들이 Bash 만 가지고있는 소위 Bashisms 라는 구문 적 장점을 사용한다는 것 입니다. Bashism의 예는 다음과 같은 하위 문자열입니다.
echo $SHELL
/bin/bash
a=1234567890
echo ${a}
1234567890
echo ${a:3}
4567890
echo ${a:3:1}
4
이:
echo ${a#123}
4567890
반면 Dash는 주로 POSIX 호환 (및 그 이상)을 목표로하며,이 작업 을 시도하면 나쁜 Substition 오류가 발생합니다.
echo $SHELL
/bin/dash
# actually, it will read /bin/bash above, because if you just run dash
# it will not set the $SHELL variable :)
a=1234567890
echo ${a}
1234567890
echo ${a:3}
dash: Bad substitution
이것은 쉘 스크립트의 인터프리터로 /bin/sh
(및 dash
)를 사용하고 그 안에 Bashism을 사용하는 경우 중요합니다. 데비안과 우분투에는 Bashisms에 대한 훌륭한 위키 페이지가 있으며 일반적으로 쉘 스크립트와 특히 init 스크립트가 나쁜 이유가 있습니다. 따라서 의식적으로 당신이 필요로하는 여부를 선택해야합니다 /bin/sh
또는 /bin/bash
당신의 스크립트 인터프리터있다.
대시는 시스템에서 기본 쉘로 사용되지 않아야합니다. Bash를 사용하십시오. 스크립트의 이식성을 위해 Dash를 인터프리터로 사용하여 다른 Linux 버전 및 Unix에서 스크립트가 실행될 확률을 높일 수 있습니다.