macOS wird nun standardmäßig mit zsh als Shell ausgeliefert, was bedeutet, dass dieses Problem recht häufig auftritt.
In zsh:
% bin/rake plugin:spec[discourse-solved]
zsh: keine Übereinstimmungen gefunden: plugin:spec[discourse-solved]
Warum passiert das?
Dies liegt daran, dass die eckigen Klammern als Glob-Muster interpretiert werden. In Bash schlägt das Glob-Muster fehl, aber der Befehl wird dennoch ausgeführt und funktioniert. Im Gegensatz dazu wirft zsh einen Fehler aus und führt rake nicht aus.
Zur Veranschaulichung, in Bash:
○ → echo bin/rake plugin:spec[discourse-solved]
bin/rake plugin:spec[discourse-solved]
○ → touch plugin:specd
○ → echo bin/rake plugin:spec[discourse-solved]
bin/rake plugin:specd
Sie können das zsh-Verhalten in Bash nachahmen, indem Sie die Option failglob aktivieren:
○ → echo bin/rake plugin:spec[discourse-solved]
bin/rake plugin:spec[discourse-solved]
○ → shopt -s failglob
○ → echo bin/rake plugin:spec[discourse-solved]
bash: keine Übereinstimmung: plugin:spec[discourse-solved]
(danke an @j.jaffeux und @pmusaraj für die Hinweise in die richtige Richtung und an @supermathie für die Bash-Beispiele
)
Damit es wie erwartet funktioniert, müssen Sie das gesamte Rake-Argument in Anführungszeichen setzen:
% bin/rake "plugin:spec[discourse-solved]"