From dd450a0dedf50067e97e4725e1303758746ddca8 Mon Sep 17 00:00:00 2001 From: Matt Kraai Date: Wed, 13 Sep 2000 03:43:36 +0000 Subject: [PATCH] Don't fork for the . (source) command so that environment settings are preserved. --- lash.c | 3 ++- sh.c | 3 ++- shell/lash.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lash.c b/lash.c index 9f67f1c91..cd27e468b 100644 --- a/lash.c +++ b/lash.c @@ -145,6 +145,7 @@ static struct builtInCommand bltins[] = { {"export", "Set environment variable", builtin_export}, {"unset", "Unset environment variable", builtin_unset}, {"read", "Input environment variable", builtin_read}, + {".", "Source-in and run commands in a file", builtin_source}, #ifdef BB_FEATURE_SH_IF_EXPRESSIONS {"if", NULL, builtin_if}, {"then", NULL, builtin_then}, @@ -159,7 +160,6 @@ static struct builtInCommand bltins[] = { static struct builtInCommand bltins_forking[] = { {"env", "Print all environment variables", builtin_env}, {"pwd", "Print current directory", builtin_pwd}, - {".", "Source-in and run commands in a file", builtin_source}, {"help", "List shell built-in commands", builtin_help}, {NULL, NULL, NULL} }; @@ -500,6 +500,7 @@ static int builtin_source(struct job *cmd, struct jobSet *junk) /* Now run the file */ status = busy_loop(input); + fclose(input); return (status); } diff --git a/sh.c b/sh.c index 9f67f1c91..cd27e468b 100644 --- a/sh.c +++ b/sh.c @@ -145,6 +145,7 @@ static struct builtInCommand bltins[] = { {"export", "Set environment variable", builtin_export}, {"unset", "Unset environment variable", builtin_unset}, {"read", "Input environment variable", builtin_read}, + {".", "Source-in and run commands in a file", builtin_source}, #ifdef BB_FEATURE_SH_IF_EXPRESSIONS {"if", NULL, builtin_if}, {"then", NULL, builtin_then}, @@ -159,7 +160,6 @@ static struct builtInCommand bltins[] = { static struct builtInCommand bltins_forking[] = { {"env", "Print all environment variables", builtin_env}, {"pwd", "Print current directory", builtin_pwd}, - {".", "Source-in and run commands in a file", builtin_source}, {"help", "List shell built-in commands", builtin_help}, {NULL, NULL, NULL} }; @@ -500,6 +500,7 @@ static int builtin_source(struct job *cmd, struct jobSet *junk) /* Now run the file */ status = busy_loop(input); + fclose(input); return (status); } diff --git a/shell/lash.c b/shell/lash.c index 9f67f1c91..cd27e468b 100644 --- a/shell/lash.c +++ b/shell/lash.c @@ -145,6 +145,7 @@ static struct builtInCommand bltins[] = { {"export", "Set environment variable", builtin_export}, {"unset", "Unset environment variable", builtin_unset}, {"read", "Input environment variable", builtin_read}, + {".", "Source-in and run commands in a file", builtin_source}, #ifdef BB_FEATURE_SH_IF_EXPRESSIONS {"if", NULL, builtin_if}, {"then", NULL, builtin_then}, @@ -159,7 +160,6 @@ static struct builtInCommand bltins[] = { static struct builtInCommand bltins_forking[] = { {"env", "Print all environment variables", builtin_env}, {"pwd", "Print current directory", builtin_pwd}, - {".", "Source-in and run commands in a file", builtin_source}, {"help", "List shell built-in commands", builtin_help}, {NULL, NULL, NULL} }; @@ -500,6 +500,7 @@ static int builtin_source(struct job *cmd, struct jobSet *junk) /* Now run the file */ status = busy_loop(input); + fclose(input); return (status); } -- 2.25.1