depecheSoul
depecheSoul

Reputation: 956

How do you run bash script as a command?

I have a bash script, which I use for configuration of different parameters in text files in my wireless access media server.

The script is located in one directory, and because I do all of configurations using putty, I have to either use the full path of the file or move to the directory that contains the file. I would like to avoid this.

Is it possible to save the bash script in or edit the bash script so that I can run it as command, for example as cp or ls commands?

Upvotes: 4

Views: 7375

Answers (5)

vinod devops
vinod devops

Reputation: 1

Create a script as below

#!/bin/bash
Shell script to run

Export the script Path in to a variable:

export script="/path/to/script"

Type "Script" Command in the CLI to Get Shell script Executed

# script

If you want to make sure Script command should run in different sessions add below in .bashrc file

export Script="/path/to/script"

Upvotes: 0

Andy K
Andy K

Reputation: 5074

You can write a minimal wrapper in your home directory:

#!/bin/bash
exec /yourpath/yourfile.extension

And run your child script with this command ./NameOfYourScript

update: Unix hawks will probably say the first solution is a no-brainer because of the additional admin work it will load on you. Agreed, but on your requirements, my solution works :)

Otherwise, you can use an alias; you will have to amend your .bashrc

alias menu='bash /yourpath/menuScript.sh'

Upvotes: 2

PeteM
PeteM

Reputation: 51

Another way is to run it with:

/bin/bash /path/to/script

Then the file doesn't need to be executable.

Upvotes: 1

John Hascall
John Hascall

Reputation: 9416

The script needs to be executable, with:

chmod +x scriptname

(or similar).

Also, you want the script to be located in a directory that is in your PATH. To see your PATH use:

echo $PATH

Your choices are: to move (or link) the file into one of those directories, or to add the directory it is in to your PATH.

You can add a directory to your PATH with:

PATH=$PATH:/name/of/my/directory

and if you do this in the file $HOME/.bashrc it will happen for each of your shell's automatically.

Upvotes: 12

Ingo Meldau
Ingo Meldau

Reputation: 494

You can place a softlink to the script under /usr/local/bin (Should be in $PATH like John said)

ln -s /path/to/script /usr/local/bin/scriptname

This should do the trick.

Upvotes: 5

Related Questions