Si bien es cierto que un comando por sí mismo no puede desactivar el globbing, es posible que un usuario le diga a un shell de Unix que no use un comando glob en particular. Esto generalmente se logra editando los archivos de configuración de un shell. Suponiendo que el comando foose puede encontrar a lo largo de la ruta del comando, sería necesario agregar lo siguiente al archivo de configuración apropiado:
Para las conchas sh, bash y ksh:
alias foo='set -f;foo';foo(){ command foo "$@";set +f;}
Para los shells csh y tcsh:
alias foo 'set noglob;\foo \!*;unset noglob'
Para el shell zsh:
alias foo='noglob foo'
No es necesario utilizar la ruta del comando. Digamos que el comando foo está almacenado en el directorio ~ / bin, entonces lo anterior se convertiría en:
Para las conchas sh, bash y ksh:
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
Para los shells csh y tcsh:
alias foo 'set noglob;$home/bin/foo \!*;unset noglob'
Para el shell zsh:
alias foo='noglob ~/bin/foo'
Todo lo anterior se probó con OSX 10.9.2 de Apple. Nota: Al copiar el código anterior, tenga cuidado de eliminar cualquier espacio. Pueden ser importantes.
Actualizar:
El usuario geira ha señalado que en el caso de un shell bash
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
podría ser reemplazado con
reset_expansion(){ CMD="$1";shift;$CMD "$@";set +f;}
alias foo='set -f;reset_expansion ~/bin/foo'
lo que elimina la necesidad de la función foo.
Algunos sitios web utilizados para crear este documento:
pwd,echo *es solo*