Debianで、#!/bin/sh
から始まるシェルスクリプトを実行しようとして、以下のように怒られるときがあります
1
| ./hoge.sh: 5: ./hoge.sh: Syntax error: newline unexpected (expecting ")")
|
これは、DebianやUbuntuなどのDebianベースのディストリで、/bin/sh
のシンボリックリンクがDebian Almquist shell(dash)へのリンクになっているため
1 2
| $ ls -l /bin/sh lrwxrwxrwx 1 root root 4 1月 24 2017 /bin/sh -> dash
|
これを、/bin/bash
に変更します(もし、dpkg-reconfigureをnon-interactiveにする場合はexpectを使います)
1 2 3 4 5 6 7 8 9
| $ sudo dpkg-reconfigure dash -freadline dash を設定しています ---------------------
システムシェルはシェルスクリプト用のデフォルトのコマンドインタプリタです。
dash をシステムシェルとして使うことは、システム全体のパフォーマンスを改善します。対話的に利用しているユーザのシェルについては、変更しません。
dash をデフォルトのシステムシェル (/bin/sh) として使いますか? [はい/いいえ] Y
|
1 2
| $ ls -l /bin/sh lrwxrwxrwx 1 root root 4 3月 1 14:06 /bin/sh -> bash
|