GNU/Linux >> Linux の 問題 >  >> Linux

どの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からのエラーはありません

# bash ubuntu/util.sh

承認された回答:

期待するbash実行可能ファイルを実行していますが、シェルは単なるbashではありません。 POSIX shで実行されているbashです。 互換モード。これは、呼び出されたコマンド名を確認し、それがshの場合に実行されます。 、その後、POSIXモードを自動的にアクティブにします。これは非常にひどい仕事をしているので、POSIX shのテストに完全に依存すべきではありません。 互換性のあるスクリプトですが、許可される構文を大幅に制限する必要があります。

–posix

デフォルトの動作がPOSIX標準と異なる場合のbashの動作を、標準(posixモード)に一致するように変更します。
posixモードがbashの動作にどのように影響するかを詳しく説明しているドキュメントへの参照については、以下の参照も参照してください。

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

--posixでBashを開始する コマンドラインオプションまたはset
-o posix
の実行 Bashの実行中は、Bashのデフォルトが異なる領域でPOSIXによって指定された
に一致するように動作を変更することにより、BashがPOSIX標準により厳密に準拠するようになります。

shとして呼び出された場合 、Bashはスタートアップ
ファイルを読み取った後にPOSIXモードに入ります。


Linux
  1. どのシェルインタープリターがシバンなしでスクリプトを実行しますか?

  2. 実行する前にシェルスクリプト全体を読む方法は?

  3. Bashが実行されているTtyを取得する方法は?

  1. どちらの端末が優れているか:BashとZsh

  2. Bash / posixシェルで変数を引用するのを忘れることのセキュリティへの影響?

  3. パスの bash 配列から不足しているパスを抽出する

  1. (bash)シェルの特別なパラメーター/変数はどれですか?

  2. どのシェルを使用する必要がありますか– Tcsh Vs Bash ??

  3. Bashで文字列を16進数として読み取る方法は?