どのbashが実行されていますか?

どのbashが実行されていますか?

bashをシェルで構成したようですが、なぜこれが起こるのでしょうか?

私のシェルはbashです。

# ls -al `which sh`
  lrwxrwxrwx 1 root root 4 Jul 12 03:25 /bin/sh -> bash 

shを使用してスクリプトを実行するとエラーが発生しました。

# sh ubuntu/util.sh
  ubuntu/util.sh: line 32: `test-build-release': not a valid identifier

バッシュエラーなし

# bash ubuntu/util.sh

ベストアンサー1

期待されるbash実行可能ファイルを実行していますが、シェルは単純なbashではなく、shPOSIX互換モードで実行されるbashです。これを呼び出したコマンドの名前を確認してこれを実行し、その場合はsh自動的にPOSIXモードを有効にします。これは非常にうまく行われず、POSIX互換スクリプトのテストに完全に依存してはいけませんが、sh許可される構文を大幅に制限する必要があります。

--posix

POSIX標準とは異なる動作をするbashのデフォルト動作を標準(posixモード)に合わせて変更します。 posix モードが bash の動作にどのように影響するかについて詳しくは、下記のドキュメントをご覧ください。

そしてからhttp://tiswww.case.edu/php/chet/bash/POSIX:

--posixコマンドラインオプションでBashを起動するか、set -o posixBashの実行中に実行すると、Bashのデフォルト値が他の領域でPOSIXが指定したものと一致するように動作を変更し、BashがPOSIX標準に近づくようにします。

呼び出されると、shBash は起動ファイルを読み込んで POSIX モードに入ります。

おすすめ記事