ベストアンサー1
存在するzsh
、=cmd
コマンドのパスに展開されるファイル名拡張演算子ですcmd
。=cmd
似ている$commands[cmd]
。
したがって、ここではコマンド==
のパラメータの1つを使用して[
コマンドのパスに拡張します=
。=
コマンドから呼び出されたコマンドがないため、エラーが$PATH
発生します。
比較する:
$ echo =ls
/bin/ls
$ echo =junk
zsh: junk not found
命令の恒等演算子[
はです=
。このコマンドはテストのみを実行し、割り当ては実行しないため、他の言語(Cのvsや他の言語のvsなど)など、割り当て演算子と同等の比較[
演算子を区別する必要はありません。=
==
:=
=
したがって、次のようにする必要があります。
[ "$USER" = root ]
Still [
of zsh
、 like of も as の代替をサポートしていますksh
が、そのオプションを無効にしない限り(シミュレーションのように)、その演算子を避けるために少なくとも最初のオプションを引用する必要があります。==
=
equals
ksh
=
=cmd
[ "$USER" '==' root ]
whileは$USERNAME
によって自動的に設定されますが、zsh
そうでは$USER
ありません(たとえ環境変数として設定されますがlogin
)。
スーパーユーザー権限があるかどうかをテストするには、有効なユーザーIDが0であることを確認する方がより信頼性があります。これはまたはzsh
をbash
使用して[ "$EUID" -eq 0 ]
実行できます(( EUID == 0 ))
。
また見なさい: