S'il est vrai qu'une commande elle-même ne peut pas désactiver la globalisation, il est possible pour un utilisateur de dire à un shell Unix de ne pas glober une commande particulière. Ceci est généralement accompli en éditant les fichiers de configuration d'un shell. En supposant que la commande foo
se trouve le long du chemin de la commande, les éléments suivants doivent être ajoutés au fichier de configuration approprié:
Pour les shells, bash et ksh:
alias foo='set -f;foo';foo(){ command foo "$@";set +f;}
Pour les shells csh et tcsh:
alias foo 'set noglob;\foo \!*;unset noglob'
Pour le shell zsh:
alias foo='noglob foo'
Le chemin de commande n'a pas à être utilisé. Dites que la commande foo est stockée dans le répertoire ~ / bin, alors ce qui précède deviendrait:
Pour les shells, bash et ksh:
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
Pour les shells csh et tcsh:
alias foo 'set noglob;$home/bin/foo \!*;unset noglob'
Pour le shell zsh:
alias foo='noglob ~/bin/foo'
Tout ce qui précède a été testé avec l'OSX 10.9.2 d'Apple. Remarque: lors de la copie du code ci-dessus, veillez à ne pas supprimer les espaces. Ils peuvent être importants.
Mise à jour:
L'utilisateur geira a souligné que dans le cas d'un shell bash
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
pourrait être remplacé par
reset_expansion(){ CMD="$1";shift;$CMD "$@";set +f;}
alias foo='set -f;reset_expansion ~/bin/foo'
ce qui élimine le besoin de la fonction foo.
Certains sites Web utilisés pour créer ce document:
pwd
,echo *
c'est juste*