ctrl-alt-delor
ctrl-alt-delor

Reputation: 7755

Making a bash script switch to interactive mode and give a prompt

I am writing a training tool, it is written in bash to teach bash/unix.

I want a script to run to set things up, then to hand control to the user. I want it to be easily runnable by typing ./script-name

How do I do this?

I.E.

Currently it will work if I type . tutorial/bashrc

Upvotes: 17

Views: 21199

Answers (2)

Gabriel Staples
Gabriel Staples

Reputation: 53265

Try making it an alias in your ~/.bashrc file. Add this to the bottom of ~/.bashrc:

alias tutorial='. tutorial/bashrc'

Then close and re-open your terminal, or type . ~/.bashrc to re-source it.

To use this alias, simply call tutorial, and that will automatically get replaced with its alias, as though you had called . tutorial/bashrc.

Upvotes: 0

Igor Chubin
Igor Chubin

Reputation: 64623

There are several options:

  • You start script in the same shell, using source or .;
  • You start a new shell but with your script as a initialization script:

The first is obvious; I write a little bit more details about the second.

For that, you use --init-file option:

bash --init-file my-init-script

You can even use this option in the shebang line:

#!/bin/bash --init-file

And then you start you script as always:

./script-name

Example:

$ 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

$

As you can see, the script has made the environment for the user and then has given him the prompt.

Upvotes: 18

Related Questions