"Project-Id-Version: bash 5.0-beta2\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-11-16 15:54-0500\n"
-"PO-Revision-Date: 2018-12-08 14:10-0500\n"
+"PO-Revision-Date: 2018-12-13 13:27-0500\n"
"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
"Language: zh_CN\n"
"从别名定义列表中删除每一个“名字”。\n"
" \n"
" 选项:\n"
-" -a\t删除所有的别名定义。\n"
+" -a\t删除所有的别名定义\n"
" \n"
-" è¿\94å\9b\9eæ\88\90å\8a\9fï¼\8cé\99¤é\9d\9eâ\80\9cå\90\8då\97â\80\9c不是一个已存在的别名。"
+" è¿\94å\9b\9eæ\88\90å\8a\9fï¼\8cé\99¤é\9d\9eâ\80\9cå\90\8då\97â\80\9d不是一个已存在的别名。"
#: builtins.c:291
msgid ""
static SHELL_VAR nameref_maxloop_value;
static HASH_TABLE *last_table_searched; /* hash_lookup sets this */
+static VAR_CONTEXT *last_context_searched;
/* Some forward declarations. */
static void create_variable_tables __P((void));
if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env)
{
VUNSETATTR (old_var, att_invisible); /* XXX */
+#if 0 /* TAG:bash-5.1 */
+ /* We still want to flag this variable as local, though, and set things
+ up so that it gets treated as a local variable. */
+ new_var = old_var;
+ /* Since we found the variable in a temporary environment, this will
+ succeed. */
+ for (vc = shell_variables; vc; vc = vc->down)
+ if (vc_isfuncenv (vc) && vc->scope == variable_context)
+ break;
+ goto set_local_var_flags;
+#endif
return (old_var);
}
new_var->attributes = exported_p (old_var) ? att_exported : 0;
}
+set_local_var_flags:
vc->flags |= VC_HASLOCAL;
new_var->context = variable_context;
nvc = vc;
if (v && nameref_p (v))
{
+ /* This starts at the context where we found the nameref. If we
+ want to start the name resolution over again at the original
+ context, this is where we need to change it */
nv = find_variable_nameref_context (v, vc, &nvc);
if (nv == 0)
{
else if (nv == &nameref_maxloop_value)
{
internal_warning (_("%s: circular name reference"), v->name);
-#if 0
- return (bind_variable_value (v, value, flags|ASS_NAMEREF));
+#if 1
+ /* TAG:bash-5.1 */
+ return (bind_global_variable (v->name, value, flags));
#else
v = 0; /* backwards compat */
#endif
else if (nv == &nameref_maxloop_value)
{
internal_warning (_("%s: circular name reference"), v->name);
-#if 0
- return (bind_variable_value (v, value, flags|ASS_NAMEREF));
+#if 1
+ /* TAG:bash-5.1 */
+ return (bind_global_variable (v->name, value, flags));
#else
v = 0; /* backwards compat */
#endif
but the variable does not already exist, assign to the nameref
target and add the target to the temporary environment. This is
what ksh93 does */
- if (var && nameref_p (var) && valid_nameref_value (nameref_cell (var), 1))
+ /* We use 2 in the call to valid_nameref_value because we don't want
+ to allow array references here at all (newname will be used to
+ create a variable directly below) */
+ if (var && nameref_p (var) && valid_nameref_value (nameref_cell (var), 2))
{
newname = nameref_cell (var);
var = 0; /* don't use it for append */