Sebbene sia vero che un comando stesso non può disattivare il globbing, è possibile che un utente dica a una shell Unix di non glob un comando particolare. Questo di solito si ottiene modificando i file di configurazione di una shell. Supponendo che il comando foo
possa essere trovato lungo il percorso del comando, è necessario aggiungere quanto segue al file di configurazione appropriato:
Per le shell sh, bash e ksh:
alias foo='set -f;foo';foo(){ command foo "$@";set +f;}
Per le shell csh e tcsh:
alias foo 'set noglob;\foo \!*;unset noglob'
Per la shell zsh:
alias foo='noglob foo'
Non è necessario utilizzare il percorso del comando. Supponiamo che il comando foo sia memorizzato nella directory ~ / bin, quindi il precedente diventerebbe:
Per le shell sh, bash e ksh:
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
Per le shell csh e tcsh:
alias foo 'set noglob;$home/bin/foo \!*;unset noglob'
Per la shell zsh:
alias foo='noglob ~/bin/foo'
Tutto quanto sopra è stato testato utilizzando OSX 10.9.2 di Apple. Nota: quando si copia il codice precedente, fare attenzione a eliminare eventuali spazi. Possono essere significativi.
Aggiornare:
L'utente geira ha sottolineato che nel caso di una shell bash
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
potrebbe essere sostituito con
reset_expansion(){ CMD="$1";shift;$CMD "$@";set +f;}
alias foo='set -f;reset_expansion ~/bin/foo'
che elimina la necessità della funzione foo.
Alcuni siti web utilizzati per creare questo documento:
pwd
,echo *
è solo*