• protect POSIX builtins and utilities from aliases, e.g:
‣ : → \: ‣ alias → \alias ⇒ except in some internally used cases, where we use \builtin alias ‣ command . → \command . • protect Korn Shell builtins from aliases and functions, e.g: ‣ typeset → \builtin typeset ⇒ also unravels the “local” alias used ‣ print → \builtin print • protect internally-used things from aliases ‣ “let]” is not a valid function name ‣ “set” is POSIX so we don’t expect anyone to override it in a function • use “command -v” instead of “whence -p” (“which”) in most places; thanks izabera from #ed on IRC for pointing out that “command -v” is POSIX – except, “whence -p” a̲l̲w̲a̲y̲s̲ looks for an executable and shows its full pathname; “command -v” also resolves to aliases, functions and builtins, so only use it where it makes any sense (both never output to stderr) • make most of dot.mkshrc work in the face of such aliases ‣ “ulimit -c” is used; this is not POSIX, and not portable; maybe we should make ulimit accept-and-ignore the most common limits even if the OS doesn’t use them? • update list of builtin aliases in the manpage
This commit is contained in:
9
sh.h
9
sh.h
@@ -169,9 +169,9 @@
|
||||
#endif
|
||||
|
||||
#ifdef EXTERN
|
||||
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.716 2015/03/08 21:30:22 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/sh.h,v 1.717 2015/03/08 22:54:35 tg Exp $");
|
||||
#endif
|
||||
#define MKSH_VERSION "R50 2015/03/07"
|
||||
#define MKSH_VERSION "R50 2015/03/08"
|
||||
|
||||
/* arithmetic types: C implementation */
|
||||
#if !HAVE_CAN_INTTYPES
|
||||
@@ -802,9 +802,8 @@ EXTERN const char Toomem[] E_INIT("can't allocate %zu data bytes");
|
||||
EXTERN const char Tsynerr[] E_INIT("syntax error");
|
||||
#endif
|
||||
EXTERN const char Tselect[] E_INIT("select");
|
||||
EXTERN const char Tlocal_typeset[] E_INIT("local=typeset");
|
||||
#define T_typeset (Tlocal_typeset + 5) /* "=typeset" */
|
||||
#define Ttypeset (Tlocal_typeset + 6) /* "typeset" */
|
||||
EXTERN const char T_typeset[] E_INIT("=typeset");
|
||||
#define Ttypeset (T_typeset + 1) /* "typeset" */
|
||||
EXTERN const char Talias[] E_INIT("alias");
|
||||
EXTERN const char Tunalias[] E_INIT("unalias");
|
||||
EXTERN const char Tsgset[] E_INIT("*=set");
|
||||
|
Reference in New Issue
Block a user