diff --git a/src/plugins/terminal/terminalpane.cpp b/src/plugins/terminal/terminalpane.cpp index 111e6d2d992..096fffcba1f 100644 --- a/src/plugins/terminal/terminalpane.cpp +++ b/src/plugins/terminal/terminalpane.cpp @@ -106,6 +106,17 @@ void TerminalPane::openTerminal(const OpenTerminalParameters ¶meters) } } + if (parametersCopy.workingDirectory->needsDevice() && !parametersCopy.shellCommand) { + const FilePath shell = parametersCopy.workingDirectory->withNewPath( + parametersCopy.environment + .value_or(parametersCopy.workingDirectory->deviceEnvironment()) + .value_or("SHELL", "/bin/sh")); + if (!shell.isExecutableFile()) + parametersCopy.workingDirectory.reset(); + else + parametersCopy.shellCommand = CommandLine{shell, {}}; + } + const auto terminalWidget = new TerminalWidget(&m_tabWidget, parametersCopy); using namespace Constants;