I have an executable that starts a user-interactive shell. I would like to, upon launch of the shell, inject a few commands first, then allow the user to have their interactive session. I can do this easily using echo:echo command 1\ncommand 2\ncommand3 | ./shell_executableThis almost works. The problem is that the echo command that is feeding the process's stdin hits EOF once it's done echoing my commands. This EOF causes the shell to terminate immediately (as if you'd pressed Ctrl+D in the shell).Is there a way to inject these commands into stdin without causing an EOF afterwards?
Piping data to a process's stdin without causing EOF afterward
shell script;pipe;stdin
Found this clever answer in a similar question at stackoverflow(echo -e cmd 1\ncmd 2 && cat) | ./shell_executableThis does the trick. cat will pump in the output of echo into input stream of shell_executable and wait for more inputs until EOF.