Хоча це правда, сама команда не може вимкнути глобалізацію, користувач може сказати оболонці Unix не глобулювати певну команду. Зазвичай це досягається редагуванням файлів конфігурації оболонки. Припускаючи, що команду foo
можна знайти на шляху до команди, до відповідного конфігураційного файлу потрібно додати наступне:
Для оболонок sh, bash і ksh:
alias foo='set -f;foo';foo(){ command foo "$@";set +f;}
Для оболонок csh та tcsh:
alias foo 'set noglob;\foo \!*;unset noglob'
Для оболонки zsh:
alias foo='noglob foo'
Шлях команди використовувати не потрібно. Скажімо, команда foo зберігається в каталозі ~ / bin, тоді вищезазначене стане:
Для оболонок sh, bash і ksh:
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
Для оболонок csh та tcsh:
alias foo 'set noglob;$home/bin/foo \!*;unset noglob'
Для оболонки zsh:
alias foo='noglob ~/bin/foo'
Все вищеперелічене було протестовано за допомогою OSX 10.9.2 від Apple. Примітка: Під час копіювання наведеного коду будьте обережні, видаляючи пробіли. Вони можуть бути значними.
Оновлення:
Користувач geira зазначав, що у випадку з оболонкою bash
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
можна замінити на
reset_expansion(){ CMD="$1";shift;$CMD "$@";set +f;}
alias foo='set -f;reset_expansion ~/bin/foo'
що виключає необхідність функції foo.
Деякі веб-сайти, використовувані для створення цього документа:
pwd
,echo *
просто*