To run our script, we must first set its permissions so that we can execute it. We can do this with the
After our file mode is set to execute, we can then run the script with the
# Set permissions so user can execute $ chmod u+x hello_world # Check to see that it's executable $ ls hello_world -rwxr--r-- 1 JohnPC staff 151 Jul 2 18:21 hello_world # Execute our file $ source hello_world Hello world!
Great job! You just ran your first shell script!
Let's now go through the various ways you can execute your script. The two main methods are with a command and as a command.
We can easily execute our script with three different commands. The first, which we already saw, is the
source command. This takes as an argument the path name of our script, and executes it. A shortcut for
source is the period (
.). You may also use
bash command if you are using a bash interpreter or
sh for the regular shell.
$ source hello_world Hello world! $ . hello_world Hello world! $ bash hello_world Hello world! $ sh hello_world Hello world!
All four commands perform the same task. This way of executing may seem convenient right now, but you can't execute it from anywhere on the file structure. Let's learn how to set up your system so you can execute as a command, which is more convenient in the long run.
Oftentimes you'll want to execute your scripts as a command, just like every other command in the shell.
We can set this up in two ways:
Recall that the
$PATH variable contains all the folders the shell looks through when executing a command.
To begin, let's use the
echo $PATH to check out which folders are in our
$ echo $PATH /usr/local/git/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/JohnDoe/.composer/vendor/bin:/Users/JohnDoe/.composer:/usr/local/Cellar/postgresql/9.4.1_1/bin
You could technically add your script to any of your listed folders, but convention holds that we should list them in /usr/local/path. Now let's move our program to this folder.
$ mv hello_world /usr/local/bin # Now the shell can access our program from anywhere on the file structure! $ hello_world Hello world!
Another way to allow the shell to access our script is to add the containing folder to our
$PATH. Add the following code to your ~/.bash_profile. This is the file that gets run every time you start a new shell. Setting this up has to do with shell and environment variables.
PATH=$PATH:/path/to/our/scripts export PATH
Great! Now restart your terminal, or simply run the .bash_profile file.
$ source ~/.bash_profile $ hello_world Hello world!
PHEW! Okay, so hopefully all those methods don't overwhelm you. Note that executing as a command is more work to setup, but less work every time you access the script. Thus, it's important that you set up your
$PATH accordingly so that you can easily run the script from anywhere on your file structure.
Ever feel achy from sitting crunched up on your computer table? Try lying down with these optical glasses that allow you to work on your laptop while lying flat on your back. This is the perfect solution with those with limited mobility or those who wish to prevent neck cramps and back strains.$ Check price
The Linux Command Line takes you from your very first terminal keystrokes to writing full programs in Bash, the most popular Linux shell. Along the way you'll learn the timeless skills handed down by generations of gray-bearded, mouse-shunning gurus: file navigation, environment configuration, command chaining, pattern matching with regular expressions, and more.$ Check price