-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 According to Bruno Haible on 8/6/2007 2:10 AM: > Your experiment uses the 'exit' command to test whether aliases are supported. > However, 'exit' is a shell built-in. Whereas 'sed' is not and will likely > never be a shell built-in. Can you retry your experiment with a non-built-in?
According to POSIX, aliases are expanded after recognition of reserved words in correct context (such as if) but prior to other grammatical rules (ie. before the shell knows whether the word being expanded is a shell builtin or not). Therefore, making an alias for exit is legal. > > In gnulib-tool line 468 you see that the usual way to override built-ins in > bash is to define them as a function, because 'alias' does not work for them. According to POSIX, functions override normal builtins (such as test) but not special builtins (such as exit). But aliases are expanded prior to the place where function existence is checked. Your argument that alias cannot override builtins is flawed; in fact, aliases are the ONLY way to override special builtins. In fact, some people use something similar to the following alias in interactive settings in order to temporarily disable globbing, so they don't have to type as many quote characters to protect file globs passed to the find utility. The alias intentionally changes the parse environment prior to calling a helper function, and for this to work, it has to be an alias, not a function, since globs are already expanded when a function is called: alias find='_find(){set +f;\find "$@";};set -f;_find' - -- Don't work too hard, make some time for fun as well! Eric Blake [EMAIL PROTECTED] -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (Cygwin) Comment: Public key at home.comcast.net/~ericblake/eblake.gpg Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFGtxFm84KuGfSFAYARAmWyAJwOR21h8CAfZCZHt0xJTJ5r4Kx8eACgzWhn 0ChPOVTHVC7DxijJBuu1QcQ= =o6me -----END PGP SIGNATURE-----