![让“bash -c”在提示时保持准备状态](https://linux22.com/image/211639/%E8%AE%A9%E2%80%9Cbash%20-c%E2%80%9D%E5%9C%A8%E6%8F%90%E7%A4%BA%E6%97%B6%E4%BF%9D%E6%8C%81%E5%87%86%E5%A4%87%E7%8A%B6%E6%80%81.png)
我们怎样才能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
进程挥之不去,优点包括这(或多或少)适用于任何程序,无论它是否支持某种初始命令列表功能。