diff --git a/core/unixptyprocess.cpp b/core/unixptyprocess.cpp index e7cfcb5..478b519 100644 --- a/core/unixptyprocess.cpp +++ b/core/unixptyprocess.cpp @@ -176,16 +176,31 @@ bool UnixPtyProcess::startProcess(const QString &shellPath, QStringList environm m_shellProcess.emitReadyRead(); }); - environment.append("TERM=xterm-256color"); - environment.append("ITERM_PROFILE=Default"); - environment.append("XPC_FLAGS=0x0"); - environment.append("XPC_SERVICE_NAME=0"); - environment.append("LANG=en_US.UTF-8"); - environment.append("LC_ALL=en_US.UTF-8"); - environment.append("LC_CTYPE=UTF-8"); - environment.append("INIT_CWD=" + QCoreApplication::applicationDirPath()); - environment.append("COMMAND_MODE=unix2003"); - environment.append("COLORTERM=truecolor"); + QStringList defaultVars; + + defaultVars.append("TERM=xterm-256color"); + defaultVars.append("ITERM_PROFILE=Default"); + defaultVars.append("XPC_FLAGS=0x0"); + defaultVars.append("XPC_SERVICE_NAME=0"); + defaultVars.append("LANG=en_US.UTF-8"); + defaultVars.append("LC_ALL=en_US.UTF-8"); + defaultVars.append("LC_CTYPE=UTF-8"); + defaultVars.append("INIT_CWD=" + QCoreApplication::applicationDirPath()); + defaultVars.append("COMMAND_MODE=unix2003"); + defaultVars.append("COLORTERM=truecolor"); + + QStringList varNames; + foreach (QString line, environment) + { + varNames.append(line.split("=").first()); + } + + //append default env vars only if they don't exists in current env + foreach (QString defVar, defaultVars) + { + if (!varNames.contains(defVar.split("=").first())) + environment.append(defVar); + } QProcessEnvironment envFormat; foreach (QString line, environment) @@ -266,9 +281,9 @@ IPtyProcess::PtyType UnixPtyProcess::type() QString UnixPtyProcess::dumpDebugInfo() { return QString("PID: %1, In: %2, Out: %3, Type: %4, Cols: %5, Rows: %6, IsRunning: %7, Shell: %8, SlaveName: %9") - .arg(m_pid).arg(m_shellProcess.m_handleMaster).arg(m_shellProcess.m_handleSlave).arg(type()) - .arg(m_size.first).arg(m_size.second).arg(m_shellProcess.state() == QProcess::Running) - .arg(m_shellPath).arg(m_shellProcess.m_handleSlaveName); + .arg(m_pid).arg(m_shellProcess.m_handleMaster).arg(m_shellProcess.m_handleSlave).arg(type()) + .arg(m_size.first).arg(m_size.second).arg(m_shellProcess.state() == QProcess::Running) + .arg(m_shellPath).arg(m_shellProcess.m_handleSlaveName); } #endif