「Dash」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(同期)
1行目: 1行目:
 
[[Category:コマンドシェル]]
 
[[Category:コマンドシェル]]
 
[[en:Dash]]
 
[[en:Dash]]
  +
[[Wikipedia:ja:Debian Almquist shell|Dash]] は近代的な POSIX 互換の [[wikipedia:Bourne_shell|{{ic|/bin/sh}} (sh, Bourne shell)]] の実装です。
[[Wikipedia:ja:Debian Almquist shell|Dash]] はミニマルな POSIX 互換シェルです。Bash よりもずっと高速に動作し、使用するメモリを少なく抑えることができます。ほとんどの POSIX 互換スクリプトはスクリプトの一番最初の行に {{ic|/bin/sh}} を指定しており、{{ic|/bin/sh}} がシェルとして動作しますが、Arch ではデフォルトで {{ic|/bin/bash}} へのシンボリックリンクになっています。
 
  +
  +
Dash は [[Bash]] 互換ではありませんが以下のような特徴があります:
  +
* 実行速度が速い。Bash などのシェルに比べて [https://unix.stackexchange.com/questions/148035/is-dash-or-some-other-shell-faster-than-bash 4倍高速] に動作します。
  +
* 使用するリソースが少ない (ディスク容量, RAM, CPU)。Bash などよりもずっと小さくコンパクトです (インストール容量は Bash の 134.1 kB に比べて 6.5 MB で、ソースコードの行数は 176 kSLOC に対して 13 kSLOC です)。
  +
* セキュリティが高い。古くに開始されたプロジェクトであり、シンプルながら長い実績があります。そして [https://git.kernel.org/cgit/utils/dash/dash.git/stats/?period=q&ofs=10 多くの開発者] が携わっている [https://git.kernel.org/cgit/utils/dash/dash.git/log/ 活発に開発されている] プロジェクトでもあります。攻撃されるような部位は少なく、コードを見ている目はたくさんあります。
   
 
== インストール ==
 
== インストール ==
8行目: 13行目:
   
 
== DASH をデフォルトシェルとして使う ==
 
== DASH をデフォルトシェルとして使う ==
  +
  +
ほとんどの POSIX 互換スクリプトはスクリプトの一番最初の行に {{ic|/bin/sh}} を指定しており、{{ic|/bin/sh}} がシェルとして動作しますが、Arch ではデフォルトで {{ic|/bin/bash}} へのシンボリックリンクになっています。
   
 
{{ic|/bin/sh}} から {{ic|/bin/dash}} にシンボリックリンクを貼り直すことでシステムのパフォーマンスを向上させることができます。ただその前に、明示的に {{ic|#!/bin/bash}} を指定してないスクリプトが、ちゃんと POSIX 互換であり Bash の機能を使っていないことを確認する必要があります。
 
{{ic|/bin/sh}} から {{ic|/bin/dash}} にシンボリックリンクを貼り直すことでシステムのパフォーマンスを向上させることができます。ただその前に、明示的に {{ic|#!/bin/bash}} を指定してないスクリプトが、ちゃんと POSIX 互換であり Bash の機能を使っていないことを確認する必要があります。
32行目: 39行目:
 
== 参照 ==
 
== 参照 ==
   
http://article.gmane.org/gmane.linux.arch.devel/11418:
+
* http://article.gmane.org/gmane.linux.arch.devel/11418
 
* https://mailman.archlinux.org/pipermail/arch-dev-public/2007-November/003053.html
 
* https://mailman.archlinux.org/pipermail/arch-dev-public/2007-November/003053.html
 
* https://launchpad.net/ubuntu/+spec/dash-as-bin-sh
 
* https://launchpad.net/ubuntu/+spec/dash-as-bin-sh

2016年11月4日 (金) 22:22時点における版

Dash は近代的な POSIX 互換の /bin/sh (sh, Bourne shell) の実装です。

Dash は Bash 互換ではありませんが以下のような特徴があります:

  • 実行速度が速い。Bash などのシェルに比べて 4倍高速 に動作します。
  • 使用するリソースが少ない (ディスク容量, RAM, CPU)。Bash などよりもずっと小さくコンパクトです (インストール容量は Bash の 134.1 kB に比べて 6.5 MB で、ソースコードの行数は 176 kSLOC に対して 13 kSLOC です)。
  • セキュリティが高い。古くに開始されたプロジェクトであり、シンプルながら長い実績があります。そして 多くの開発者 が携わっている 活発に開発されている プロジェクトでもあります。攻撃されるような部位は少なく、コードを見ている目はたくさんあります。

インストール

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

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

ほとんどの POSIX 互換スクリプトはスクリプトの一番最初の行に /bin/sh を指定しており、/bin/sh がシェルとして動作しますが、Arch ではデフォルトで /bin/bash へのシンボリックリンクになっています。

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

bashism を確認

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

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

チェックするべき場所

  • インストールしたスクリプトの #!/bin/sh シバン:
$ checkbashisms -f -p $(grep -IrlE '^#! ?(/usr)?/bin/(env )?sh' /usr/bin)

/bin/sh の再リンク

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

# ln -sfT dash /bin/sh

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

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

参照