Skip to content

Shell prints input line when run with NewWithConfig on different terminal #116

Description

@scotws

Apols if I'm making a mistake here and this is not a bug - I would like to be able to access ishell through another terminal instance on Linux with go 1.12.5. So first, I set up a listener (leaving out error handling and defer here to keep the code short):

 listener, err := net.Listen("tcp", host)
 conn, err := listener.Accept()

where host is "localhost:8000" for testing. Next, I've imported "github.com/abiosoft/readline" to be able to run the shell with the listener's connection parameters in the configuration for NewWithConfig:

termCfg := &readline.Config{
        Stdin:       io.ReadCloser(conn),
        Stdout:      io.Writer(conn),
        StdinWriter: io.Writer(conn),
        Stderr:      io.Writer(conn),
}

Then I start the shell in a second terminal window through the listener:

shell := ishell.NewWithConfig(termCfg)
shell.Run()

This works fine when I open another shell and connect with nc localhost 8000 - except for the fact that after I type in a command such as help, the input line is not only echoed character for character as expected, but then printed again, giving me stuff like

> help
> help

Commands:
  clear        clear the screen
  exit         exit the program
  help         display help

I'm wondering if StdinWriter is the problem here, but changing that doesn't seem to help. I can't find an example for NewWithConfig in the docs. Is this a bug or am I missing something obvious? Thanks!

Activity

  1. abiosoft commented on May 27, 2019

    @abiosoft
    Owner

    I actually haven't tried this before. It's most likely a bug. I'll look into it.

  2. scotws commented on May 27, 2019

    @scotws
    Author

    @abiosoft Thank you! In case it helps, the long version of the code is https://github.com/scotws/angua-go/blob/ttyswitch/cli/cli.go (very alpha, though, I'm in the middle of rebuilding the basic code structure).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions