Bash:「[[」も「[」のようなプログラムですか?

Bash:「[[」も「[」のようなプログラムですか?

テスト条件[はDebianベースのディストリビューションのプログラムです/usr/bin/[。他の条件テスター[[もプログラムなのか気になります。

私が尋ねる理由は、特定sudoのユーザーにシェルスクリプトをトリガーする権限を与えるためです。セキュリティ上の理由から、このスクリプトで使用されている各プログラム(echoto/bin/echo[to /usr/bin/[)のフルパスを追加して、ユーザーがPATH自分のプログラムを使用するように変更できないようにしました。もう私も変わらなければならないかと思う[[

答え1

man bash

予約語
予約語は、シェルに特別な意味を持つ単語です。次の単語は、引用符がない場合は予約語として認識され、単純なコマンド(以下のSHELL GRAMMARを参照)の最初の単語、または大文字と小文字またはコマンドの3番目の単語です。

! Case coproc do done elif else esac fi for function if in select then Until while { } time [[ ]]

[[予約語の場合も同様なので、外部コマンドにはできません。ただし、これらのファイルが存在する可能性がありますが、フルパスまたは引用符を使用して呼び出す必要があります。

[[これらの外部コマンドが存在してもシェル構文の一部になると、次の外部コマンドがそれを実行できなくなるまで解析ルールが変更されるため、同じようには機能しません]]

関連情報