Chociaż prawdą jest, że polecenie samo w sobie nie może wyłączyć globowania, możliwe jest, że użytkownik może powiedzieć powłoce Uniksa, aby nie globowała określonego polecenia. Zwykle jest to osiągane poprzez edycję plików konfiguracyjnych powłoki. Zakładając, że polecenie foo
można znaleźć w ścieżce polecenia, do odpowiedniego pliku konfiguracyjnego należałoby dodać następujące elementy:
W przypadku powłok sh, bash i ksh:
alias foo='set -f;foo';foo(){ command foo "$@";set +f;}
W przypadku powłok csh i tcsh:
alias foo 'set noglob;\foo \!*;unset noglob'
Dla powłoki zsh:
alias foo='noglob foo'
Ścieżka poleceń nie musi być używana. Powiedzmy, że polecenie foo jest przechowywane w katalogu ~ / bin, a powyższe wyglądałoby tak:
W przypadku powłok sh, bash i ksh:
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
W przypadku powłok csh i tcsh:
alias foo 'set noglob;$home/bin/foo \!*;unset noglob'
Dla powłoki zsh:
alias foo='noglob ~/bin/foo'
Wszystkie powyższe zostały przetestowane przy użyciu systemu Apple OSX 10.9.2. Uwaga: podczas kopiowania powyższego kodu należy uważać, aby usunąć wszelkie spacje. Mogą być znaczące.
Aktualizacja:
Użytkownik geira zwrócił uwagę, że w przypadku powłoki bash
alias foo='set -f;foo';foo(){ ~/bin/foo "$@";set +f;}
można zastąpić
reset_expansion(){ CMD="$1";shift;$CMD "$@";set +f;}
alias foo='set -f;reset_expansion ~/bin/foo'
co eliminuje potrzebę funkcji foo.
Niektóre witryny internetowe użyte do utworzenia tego dokumentu:
pwd
,echo *
jest po prostu*