使bash脚本切换到交互模式并给出提示

使bash脚本切换到交互模式并给出提示,bash,Bash,我正在编写一个培训工具,它是用bash编写的,用于教授bash/unix 我希望运行一个脚本来设置,然后将控制权交给用户。 我希望通过键入/script name可以轻松运行它 我该怎么做 即 用户类型:tutorial/run 运行教程脚本设置了一些内容 用户将看到一个任务。(这个钻头有效) 返回命令提示符,shell仍处于配置状态 当前,如果我键入,它将工作。教程/bashrc有几个选项: 使用源代码或在同一个shell中启动脚本 启动一个新shell,但将脚本作为初始化脚本: 第一

我正在编写一个培训工具,它是用bash编写的,用于教授bash/unix

我希望运行一个脚本来设置,然后将控制权交给用户。 我希望通过键入
/script name
可以轻松运行它

我该怎么做

  • 用户类型:
    tutorial/run
  • 运行教程脚本设置了一些内容
  • 用户将看到一个任务。(这个钻头有效)
  • 返回命令提示符,shell仍处于配置状态

当前,如果我键入
,它将工作。教程/bashrc

有几个选项:

  • 使用
    源代码
    在同一个shell中启动脚本
    
  • 启动一个新shell,但将脚本作为初始化脚本:
第一个是显而易见的;我写了更多关于第二个的细节

为此,您可以使用
--init file
选项:

bash --init-file my-init-script
您甚至可以在shebang行中使用此选项:

#!/bin/bash --init-file
然后像往常一样开始编写脚本:

./script-name
例如:

$ cat ./script-name
#!/bin/bash --init-file
echo Setting session up
PS1='.\$ '
A=10
$ ./script-name
Setting session up
.$ echo $A
10
.$ exit
$ echo $A

$

如您所见,脚本为用户创建了环境,然后给了用户提示。

尝试在~/.bashrc文件中将其作为别名。将其添加到~/.bashrc的底部:

alias tutorial='. tutorial/bashrc'
然后关闭并重新打开终端,或键入
~/。bashrc
以重新获取资源


要使用此别名,只需调用
教程
,就会自动替换为其别名,就像您调用了
一样。tutorial/bashrc

一些示例工作流在这里非常有用。
--init file
没有任何后续工作。使用此技巧时,是否可以检测到正在运行的脚本?在我的Mac上,使用--init文件运行会导致$0扩展为“/bin/bash”