summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorasynts <asynts@gmail.com>2020-09-28 11:02:36 +0200
committerAndreas Kling <kling@serenityos.org>2020-09-28 17:39:50 +0200
commitafa2523724c1b8435a0df1ef5acfe112ae5e6318 (patch)
tree5680dd9252e90afbfcb637a6488c09fa5bef8d35
parentd3d7ea7e75f016f235e0ed248afbda36003febf0 (diff)
downloadserenity-afa2523724c1b8435a0df1ef5acfe112ae5e6318.zip
Shell: Don't execute scripts interactively.
The following example should illustrate one issue arising from this: $ echo 'exit 1' > example.sh $ Shell example.sh Good-bye! This message is meant to be shown to an interactive user, but not in a shell script.
-rw-r--r--Shell/Shell.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/Shell/Shell.cpp b/Shell/Shell.cpp
index 57a99f429a..12142cef2e 100644
--- a/Shell/Shell.cpp
+++ b/Shell/Shell.cpp
@@ -873,6 +873,8 @@ NonnullRefPtrVector<Job> Shell::run_commands(Vector<AST::Command>& commands)
bool Shell::run_file(const String& filename, bool explicitly_invoked)
{
TemporaryChange script_change { current_script, filename };
+ TemporaryChange interactive_change { m_is_interactive, false };
+
auto file_result = Core::File::open(filename, Core::File::ReadOnly);
if (file_result.is_error()) {
if (explicitly_invoked)