我们怎样才能bash -c
保持 shell 提示符,而不是退出?
答案1
如果你想进入交互模式,但要事先执行一些脚本。或者执行脚本并保持交互模式。那么钥匙--init-file
就适合你了。
假设你有hello.sh
#!/bin/bash
echo "Hello"
export PS1=subshell@
做
$ bash --init-file hello.sh
Hello
subshell@
答案2
另一种方法是使用expect
已在多种语言中实现的。在原始 TCL 中,可以使用:
#!/usr/bin/env expect
# run the shell
spawn -noecho bash
# blindly send the input in. another way would be to "expect" on the
# prompt, but that's more complicated
send -- "echo foo\n"
send -- "echo bar\n"
# turn interaction with the program over to the user
interact
缺点包括expect
进程挥之不去,优点包括这(或多或少)适用于任何程序,无论它是否支持某种初始命令列表功能。