Don't fork for the . (source) command so that environment settings are
preserved.
This commit is contained in:
parent
322ae93a5e
commit
dd450a0ded
3
lash.c
3
lash.c
@ -145,6 +145,7 @@ static struct builtInCommand bltins[] = {
|
|||||||
{"export", "Set environment variable", builtin_export},
|
{"export", "Set environment variable", builtin_export},
|
||||||
{"unset", "Unset environment variable", builtin_unset},
|
{"unset", "Unset environment variable", builtin_unset},
|
||||||
{"read", "Input environment variable", builtin_read},
|
{"read", "Input environment variable", builtin_read},
|
||||||
|
{".", "Source-in and run commands in a file", builtin_source},
|
||||||
#ifdef BB_FEATURE_SH_IF_EXPRESSIONS
|
#ifdef BB_FEATURE_SH_IF_EXPRESSIONS
|
||||||
{"if", NULL, builtin_if},
|
{"if", NULL, builtin_if},
|
||||||
{"then", NULL, builtin_then},
|
{"then", NULL, builtin_then},
|
||||||
@ -159,7 +160,6 @@ static struct builtInCommand bltins[] = {
|
|||||||
static struct builtInCommand bltins_forking[] = {
|
static struct builtInCommand bltins_forking[] = {
|
||||||
{"env", "Print all environment variables", builtin_env},
|
{"env", "Print all environment variables", builtin_env},
|
||||||
{"pwd", "Print current directory", builtin_pwd},
|
{"pwd", "Print current directory", builtin_pwd},
|
||||||
{".", "Source-in and run commands in a file", builtin_source},
|
|
||||||
{"help", "List shell built-in commands", builtin_help},
|
{"help", "List shell built-in commands", builtin_help},
|
||||||
{NULL, NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
@ -500,6 +500,7 @@ static int builtin_source(struct job *cmd, struct jobSet *junk)
|
|||||||
|
|
||||||
/* Now run the file */
|
/* Now run the file */
|
||||||
status = busy_loop(input);
|
status = busy_loop(input);
|
||||||
|
fclose(input);
|
||||||
return (status);
|
return (status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
3
sh.c
3
sh.c
@ -145,6 +145,7 @@ static struct builtInCommand bltins[] = {
|
|||||||
{"export", "Set environment variable", builtin_export},
|
{"export", "Set environment variable", builtin_export},
|
||||||
{"unset", "Unset environment variable", builtin_unset},
|
{"unset", "Unset environment variable", builtin_unset},
|
||||||
{"read", "Input environment variable", builtin_read},
|
{"read", "Input environment variable", builtin_read},
|
||||||
|
{".", "Source-in and run commands in a file", builtin_source},
|
||||||
#ifdef BB_FEATURE_SH_IF_EXPRESSIONS
|
#ifdef BB_FEATURE_SH_IF_EXPRESSIONS
|
||||||
{"if", NULL, builtin_if},
|
{"if", NULL, builtin_if},
|
||||||
{"then", NULL, builtin_then},
|
{"then", NULL, builtin_then},
|
||||||
@ -159,7 +160,6 @@ static struct builtInCommand bltins[] = {
|
|||||||
static struct builtInCommand bltins_forking[] = {
|
static struct builtInCommand bltins_forking[] = {
|
||||||
{"env", "Print all environment variables", builtin_env},
|
{"env", "Print all environment variables", builtin_env},
|
||||||
{"pwd", "Print current directory", builtin_pwd},
|
{"pwd", "Print current directory", builtin_pwd},
|
||||||
{".", "Source-in and run commands in a file", builtin_source},
|
|
||||||
{"help", "List shell built-in commands", builtin_help},
|
{"help", "List shell built-in commands", builtin_help},
|
||||||
{NULL, NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
@ -500,6 +500,7 @@ static int builtin_source(struct job *cmd, struct jobSet *junk)
|
|||||||
|
|
||||||
/* Now run the file */
|
/* Now run the file */
|
||||||
status = busy_loop(input);
|
status = busy_loop(input);
|
||||||
|
fclose(input);
|
||||||
return (status);
|
return (status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -145,6 +145,7 @@ static struct builtInCommand bltins[] = {
|
|||||||
{"export", "Set environment variable", builtin_export},
|
{"export", "Set environment variable", builtin_export},
|
||||||
{"unset", "Unset environment variable", builtin_unset},
|
{"unset", "Unset environment variable", builtin_unset},
|
||||||
{"read", "Input environment variable", builtin_read},
|
{"read", "Input environment variable", builtin_read},
|
||||||
|
{".", "Source-in and run commands in a file", builtin_source},
|
||||||
#ifdef BB_FEATURE_SH_IF_EXPRESSIONS
|
#ifdef BB_FEATURE_SH_IF_EXPRESSIONS
|
||||||
{"if", NULL, builtin_if},
|
{"if", NULL, builtin_if},
|
||||||
{"then", NULL, builtin_then},
|
{"then", NULL, builtin_then},
|
||||||
@ -159,7 +160,6 @@ static struct builtInCommand bltins[] = {
|
|||||||
static struct builtInCommand bltins_forking[] = {
|
static struct builtInCommand bltins_forking[] = {
|
||||||
{"env", "Print all environment variables", builtin_env},
|
{"env", "Print all environment variables", builtin_env},
|
||||||
{"pwd", "Print current directory", builtin_pwd},
|
{"pwd", "Print current directory", builtin_pwd},
|
||||||
{".", "Source-in and run commands in a file", builtin_source},
|
|
||||||
{"help", "List shell built-in commands", builtin_help},
|
{"help", "List shell built-in commands", builtin_help},
|
||||||
{NULL, NULL, NULL}
|
{NULL, NULL, NULL}
|
||||||
};
|
};
|
||||||
@ -500,6 +500,7 @@ static int builtin_source(struct job *cmd, struct jobSet *junk)
|
|||||||
|
|
||||||
/* Now run the file */
|
/* Now run the file */
|
||||||
status = busy_loop(input);
|
status = busy_loop(input);
|
||||||
|
fclose(input);
|
||||||
return (status);
|
return (status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user