diff --git a/rnsh/listener.py b/rnsh/listener.py index ed66d8e..5299429 100644 --- a/rnsh/listener.py +++ b/rnsh/listener.py @@ -158,7 +158,10 @@ async def listen(configdir, command, identitypath=None, service_name=None, verbo except Exception as e: log.error(f"Error looking up shell: {e}") log.info(f"Using {shell} for default command.") - _cmd = [shell] if shell else None + # Ensure a sane shell default. Fall back to /bin/sh if lookup fails. + if not shell or len(shell) == 0: + shell = "/bin/sh" + _cmd = [shell] else: log.info(f"Using command {shlex.join(_cmd)}") diff --git a/rnsh/session.py b/rnsh/session.py index 77628bb..4268a20 100644 --- a/rnsh/session.py +++ b/rnsh/session.py @@ -311,7 +311,7 @@ class ListenerSession: try: self.process = process.CallbackSubprocess(argv=self.cmdline, - env={"TERM": self.term or os.environ.get("TERM", None), + env={"TERM": self.term or os.environ.get("TERM") or "xterm", "RNS_REMOTE_IDENTITY": (RNS.prettyhexrep(self.remote_identity.hash) if self.remote_identity and self.remote_identity.hash else "")}, loop=self.loop,