Run an interactive bash subshell with initial commands without returning to the ("super") shell immediately
This can be easily done with temporary named pipes:
bash --init-file <(echo "ls; pwd")
Credit for this answer goes to the comment from Lie Ryan. I found this really useful, and it's less noticeable in the comments, so I thought it should be its own answer.
You can do this in a roundabout way with a temp file, although it will take two lines:
echo "ls; pwd" > initfile
bash --init-file initfile
Try this instead:
$> bash -c "ls;pwd;other commands;$SHELL"
$SHELL
It makes the shell open in interactive mode, waiting for a close with exit
.