「Dash」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
(同期)
10行目: 10行目:
 
== インストール ==
 
== インストール ==
   
[[公式リポジトリ]]から {{Pkg|dash}} は[[インストール]]できます。
+
[[公式リポジトリ]]から {{Pkg|dash}} は[[インストール]]できます。または [[AUR]] の {{AUR|dash-static-musl}} パッケージをインストールしてください
   
 
== DASH をデフォルトシェルとして使う ==
 
== DASH をデフォルトシェルとして使う ==
32行目: 32行目:
   
 
機能が破壊されないことを確認できたら、{{ic|/bin/sh}} のリンクを変更しても安全なはずです。再リンクを行うには次のコマンドを使用:
 
機能が破壊されないことを確認できたら、{{ic|/bin/sh}} のリンクを変更しても安全なはずです。再リンクを行うには次のコマンドを使用:
# ln -sfT dash /bin/sh
+
# ln -sfT dash /usr/bin/sh
Bash を更新すると {{ic|/bin/sh}} が上書きされることがあります。上書きされないようにするために、{{ic|/etc/pacman.conf}} {{ic|[options]}} セクションに以下追加してください:
+
Bash がアップデートされるとデフォルトのシンボリックリンクで {{ic|/bin/sh}} が上書きされます。上書きされないようにするに以下の [[Pacman#フック|pacman フック]]を使って、アップデート後に {{ic|/bin/sh}} のリンク再度作成するようにしてください:
  +
[Trigger]
NoUpgrade = usr/bin/sh
 
  +
Type = Package
NoExtract = usr/bin/sh
 
  +
Operation = Install
  +
Operation = Upgrade
  +
Target = bash
  +
  +
[Action]
  +
Description = Re-pointing /bin/sh symlink to dash...
  +
When = PostTransaction
  +
Exec = /usr/bin/ln -sfT dash /usr/bin/sh
  +
Depends = dash
   
 
== 参照 ==
 
== 参照 ==

2017年6月12日 (月) 22:13時点における版

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インストールできます。または AURdash-static-muslAUR パッケージをインストールしてください。

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 /usr/bin/sh

Bash がアップデートされるとデフォルトのシンボリックリンクで /bin/sh が上書きされます。上書きされないようにするには、以下の pacman フックを使って、アップデート後に /bin/sh のリンクを再度作成するようにしてください:

[Trigger]
Type = Package
Operation = Install
Operation = Upgrade
Target = bash

[Action]
Description = Re-pointing /bin/sh symlink to dash...
When = PostTransaction
Exec = /usr/bin/ln -sfT dash /usr/bin/sh
Depends = dash

参照