Package: x2goclient
Version: 4.0.5.0
Tags: patch
See https://bugzilla.redhat.com/show_bug.cgi?id=1256799
Description of problem:
After upgrading x2goclient my system assigned shell of /bin/zsh is ignored and
forcefully set to /bin/bash
The shift to running everything under /bin/bash had the side effect of setting
SHELL to /bin/bash, which is then what terminal emulators and others use for
spawning shells.
If we specify -l to bash it runs as a login shell, sources the proper startup
files and sets SHELL to whatever getpwent() returns for the login shell.
However, this also opens the door for things like ~/.bash_logout to get run
which executes "clear", which emits:
TERM environment variable not set.
when TERM is empty as it is here. So we also set TERM=dumb to work around that.
It might be nice to add the ability to distinguish between a session startup
command and other utility commands (x2gomountdirs, etc.) and only add -l to
the session startup commands. This is probably more appropriate.
--
Orion Poplawski
Technical Manager 303-415-9701 x222
NWRA, Boulder/CoRA Office FAX: 303-415-9702
3380 Mitchell Lane [email protected]
Boulder, CO 80301 http://www.nwra.com
diff --git a/src/sshprocess.cpp b/src/sshprocess.cpp
index 4866c2b..2e599b5 100644
--- a/src/sshprocess.cpp
+++ b/src/sshprocess.cpp
@@ -200,8 +200,8 @@ void SshProcess::startNormal(const QString& cmd)
// #endif
if(!masterCon->useKerberos())
{
- QString shcmd = "bash -c 'echo \"X2GODATABEGIN:" + uuidStr + "\"; export PATH=\"/usr/local/bin:/usr/bin:/bin\"; "+cmd+"; echo \"X2GODATAEND:" + uuidStr + "\";'";
- x2goDebug << "Running masterCon->addChannelConnection(this, '" << uuidStr << "', '" << shcmd.left (200) << "');";
+ QString shcmd = "bash -l -c 'echo \"X2GODATABEGIN:" + uuidStr + "\"; export PATH=\"/usr/local/bin:/usr/bin:/bin\"; export TERM=dumb; "+cmd+"; echo \"X2GODATAEND:" + uuidStr + "\";'";
+ x2goDebug << "this="<<this<<" Running masterCon->addChannelConnection(this, '" << uuidStr << "', '" << shcmd.left (200) << "');";
masterCon->addChannelConnection(this, uuidStr, shcmd);
connect(masterCon,SIGNAL(stdOut(SshProcess*,QByteArray)),this,SLOT(slotStdOut(SshProcess*,QByteArray)));
connect(masterCon,SIGNAL(channelClosed(SshProcess*,QString)), this,SLOT(slotChannelClosed(SshProcess*,QString)));
@@ -222,7 +222,7 @@ void SshProcess::startNormal(const QString& cmd)
* as there is no preceding "outer double quote" the whole argument
* is wrapped in.
*/
- shcmd = "bash -c 'echo \"X2GODATABEGIN:" + uuidStr + "\"; export PATH=\"/usr/local/bin:/usr/bin:/bin\"; "+cmd+"; echo \"X2GODATAEND:" + uuidStr + "\";'";
+ shcmd = "bash -l -c 'echo \"X2GODATABEGIN:" + uuidStr + "\"; export PATH=\"/usr/local/bin:/usr/bin:/bin\"; export TERM=dumb; "+cmd+"; echo \"X2GODATAEND:" + uuidStr + "\";'";
proc=new QProcess(this);
QString local_cmd = "";
_______________________________________________
x2go-dev mailing list
[email protected]
http://lists.x2go.org/listinfo/x2go-dev