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 foo
se 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*