Dash
Dash はミニマルな POSIX 互換シェルです。Bash よりもずっと高速に動作し、使用するメモリを少なく抑えることができます。ほとんどの POSIX 互換スクリプトはスクリプトの一番最初の行に /bin/sh
を指定しており、/bin/sh
がシェルとして動作しますが、Arch ではデフォルトで /bin/bash
へのシンボリックリンクになっています。
インストール
DASH をデフォルトシェルとして使う
/bin/sh
から /bin/dash
にシンボリックリンクを貼り直すことでシステムのパフォーマンスを向上させることができます。ただその前に、明示的に #!/bin/bash
を指定してないスクリプトが、ちゃんと POSIX 互換であり Bash の機能を使っていないことを確認する必要があります。
bashism を確認
Dash に含まれていない Bash の機能 ('bashism') は /bin/bash
を明示的に指定していないと動作しなくなります。以下の手順に従うことで修正が必要なスクリプトがないか確認することができます。
AUR から checkbashismsAUR をインストールしてください。
チェックするべき場所
- インストールしたスクリプトの
#!/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