テスト条件[
はDebianベースのディストリビューションのプログラムです/usr/bin/[
。他の条件テスター[[
もプログラムなのか気になります。
私が尋ねる理由は、特定sudo
のユーザーにシェルスクリプトをトリガーする権限を与えるためです。セキュリティ上の理由から、このスクリプトで使用されている各プログラム(echo
to/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 [[ ]]
[[
予約語の場合も同様なので、外部コマンドにはできません。ただし、これらのファイルが存在する可能性がありますが、フルパスまたは引用符を使用して呼び出す必要があります。
[[
これらの外部コマンドが存在してもシェル構文の一部になると、次の外部コマンドがそれを実行できなくなるまで解析ルールが変更されるため、同じようには機能しません]]
。