一部のコマンドはbashスクリプトでは機能しません

一部のコマンドはbashスクリプトでは機能しません

私はUbuntu 14.04.02 32ビットを使用しています。

いくつかのシェルプログラミング中にshコマンドでスクリプトを実行すると、時々エラーが発生することがわかりました。

shコマンドが#!/bin/bashの代わりにダッシュシェルを呼び出すためですか?

選択コマンドの使用に問題があります。

./scriptName.sh で実行するとすべてがうまくいきますが、sh scriptName.sh では構文エラーが報告されます。なぜこれが起こるのですか?

答え1

スクリプトがbash構文を使用している場合は、始める必要があります#!/bin/bash。スクリプトを実行すると、/path/to/scriptすべてがうまくいきます。インタプリタ(シェル)を明示的に呼び出す場合は、正しいインタプリタ、つまりbashnotshまたは何かを呼び出す必要がありますperl

多くのバリエーションがありますsh。バッシュもその一つです。ダッシュは別のものです。 Dashはbashよりも機能が少なくなりますが、より高速でメモリの使用量が少なくなります。これがUbuntuがダッシュを使用することを選択した理由ですsh。 bashのアドインが必要な場合は、とにかく明示的に呼び出す必要があります。

関連情報