Dash (日本語) - ArchWiki

# Dash (日本語)

Dash はミニマルな POSIX 互換シェルです。Bash よりもずっと高速に動作し、使用するメモリを少なく抑えることができます。ほとんどの POSIX 互換スクリプトはスクリプトの一番最初の行に `/bin/sh` を指定しており、`/bin/sh` がシェルとして動作しますが、Arch ではデフォルトで `/bin/bash` へのシンボリックリンクになっています。

## インストール

公式リポジトリから dash はインストールできます。

## DASH をデフォルトシェルとして使う

`/bin/sh` から `/bin/dash` にシンボリックリンクを貼り直すことでシステムのパフォーマンスを向上させることができます。ただその前に、明示的に `#!/bin/bash` を指定してないスクリプトが、ちゃんと POSIX 互換であり Bash の機能を使っていないことを確認する必要があります。

### bashism を確認

Dash に含まれていない Bash の機能 ('bashism') は `/bin/bash` を明示的に指定していないと動作しなくなります。以下の手順に従うことで修正が必要なスクリプトがないか確認することができます。

AUR から checkbashisms をインストールしてください。

#### チェックするべき場所

- インストールしたスクリプトの `#!/bin/sh` シバン:

    $ checkbashisms -f -p $(grep -rlE '^#! ?/bin/(env )?sh' /usr/bin)

### /bin/sh の再リンク

機能が破壊されないことを確認できたら、`/bin/sh` のリンクを変更しても安全なはずです。再リンクを行うには次のコマンドを使用:

    # ln -sfT dash /bin/sh

Bash を更新すると `/bin/sh` が上書きされることがあります。上書きされないようにするために、`/etc/pacman.conf` の [option] セクションに以下の行を追加してください:

    NoUpgrade   = usr/bin/sh
    NoExtract   = usr/bin/sh

## 参照

http://article.gmane.org/gmane.linux.arch.devel/11418:

- https://mailman.archlinux.org/pipermail/arch-dev-public/2007-November/003053.html
- https://launchpad.net/ubuntu/+spec/dash-as-bin-sh
- https://wiki.ubuntu.com/DashAsBinSh

Category:

- Command shells (日本語)