Na string:
rtsp://user:[email protected]:5554/my-media/media.amp?videocodec=h264
você tem ? nessa string, então o shell executará expansão do nome do caminho nessa string, usando as regras de correspondência de padrões .
Em bash , se failglob opções não foram definidas, o que é padrão, o padrão com falha será deixado como está:
$ echo does-not-exist?
does-not-exist?
Embora zsh não informe nenhum erro de correspondência de padrão com nomatch conjunto de opções, que é o padrão:
$ echo does-not-exist?
zsh: no matches found: does-not-exist?
Você pode fazer com que zsh suprima o erro e imprima o padrão:
$ setopt nonomatch
$ echo does-not-exist?
does-not-exist?
Você pode fazer com que bash se comporte como zsh com nomatch conjunto de opções, ativando failglob :
$ shopt -s failglob
$ echo does-not-exist?
bash: no match: does-not-exist?
Mais genericamente, você pode desativar a geração de nome de arquivo do shell:
$ set -f
$ : "The command"
$ set +f
(ou set -o noglob , set +o noglob )
ou usando um dos métodos citando do shell para fazer com que o shell trate ? e outro padrão combinando caracteres especiais literalmente.
zsh também fornece o noglob builtin, que desativa a geração de nome de arquivo em qualquer palavra para o seguinte comando simples:
$ noglob echo *
*