Ao usar set
da maneira como você faz em um shell semelhante a sh-
:
set noglob on
você realmente modifica $@
substituindo os argumentos dados na linha de comando por noglob
e on
(como se você tivesse chamado o script com sh a.sh noglob on
).
Para definir a opção de shell noglob
, use
set -o noglob
Nem sh
nem ksh
tem uma opção de shell chamada filec
, até onde eu sei.
Observe que, se você invocar o script com um intérprete explícito como sh
, a #!
-line será ignorada.
Como seu script se parece com um script tcsh
ou csh
(a sintaxe set
é absolutamente correta e esses shells também têm uma opção filec
shell, mas a variável $@
não está em csh
, tanto quanto eu sei):
Se for um script csh
ou tcsh
que você está escrevendo, certifique-se de invocar o script com csh
ou tcsh
ou, se o script for executável e chamado sem um intérprete explícito, que a linha #!
aponta para o apropriado destes dois.
Resumindo, certifique-se de saber em que idioma você está escrevendo seu script e use o interpretador correto.