「Dash」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
20行目: 20行目:
   
 
* インストールしたスクリプトの {{ic|#!/bin/sh}} シバン:
 
* インストールしたスクリプトの {{ic|#!/bin/sh}} シバン:
$ checkbashisms -f -p $(grep -rlE '^#! ?/bin/(env )?sh' /usr/bin)
+
$ checkbashisms -f -p $(grep -IrlE '^#! ?(/usr)?/bin/(env )?sh' /usr/bin)
   
 
=== /bin/sh の再リンク ===
 
=== /bin/sh の再リンク ===
26行目: 26行目:
 
機能が破壊されないことを確認できたら、{{ic|/bin/sh}} のリンクを変更しても安全なはずです。再リンクを行うには次のコマンドを使用:
 
機能が破壊されないことを確認できたら、{{ic|/bin/sh}} のリンクを変更しても安全なはずです。再リンクを行うには次のコマンドを使用:
 
# ln -sfT dash /bin/sh
 
# ln -sfT dash /bin/sh
Bash を更新すると {{ic|/bin/sh}} が上書きされることがあります。上書きされないようにするために、{{ic|/etc/pacman.conf}} の [option] セクションに以下の行を追加してください:
+
Bash を更新すると {{ic|/bin/sh}} が上書きされることがあります。上書きされないようにするために、{{ic|/etc/pacman.conf}} の {{ic|[options]}} セクションに以下の行を追加してください:
 
NoUpgrade = usr/bin/sh
 
NoUpgrade = usr/bin/sh
 
NoExtract = usr/bin/sh
 
NoExtract = usr/bin/sh

2016年8月29日 (月) 23:49時点における版

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 から 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

参照

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