将Bash脚本设置为交互模式并提供提示符。

17
我正在编写一个培训工具,它是用Bash编写的,旨在教授Bash/Unix。
我想要一个脚本来运行设置,然后将控制权交给用户。我希望用户可以轻松地通过键入./script-name来运行它。
我该如何做到这一点?
即:
  • 用户键入:tutorial/run
  • run-tutorial脚本设置事项。
  • 向用户展示任务。(此部分有效)
  • 命令提示符返回,并保留配置的shell。
当前如果我键入. tutorial/bashrc,它就能正常工作。

这里提供一些示例工作流程会非常有帮助。 - Raad
2个回答

16

有几个选择:

  • 您可以在同一 shell 中使用 source 或者 . 来启动脚本;
  • 您可以启动新的 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

$

正如您所看到的,脚本已经为用户创建了环境,然后给出了提示。


1
--init-file 后面不跟任何内容就可以使用。谢谢 - ctrl-alt-delor
1
使用这个技巧时,是否可以检测正在运行的脚本?在我的 Mac 上仅使用 --init-file 会导致 $0 扩展为 "/bin/bash"。 - Alexandros

0

尝试在您的~/.bashrc文件中将其设置为别名。将以下内容添加到~/.bashrc底部:

alias tutorial='. tutorial/bashrc'

然后关闭并重新打开终端,或者输入. ~/.bashrc重新加载它。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接