13,420
edits
Changes
→INVESTIGATION 2: USING VARIABLES IN SHELL SCRIPTS
# Use a text editor to edit the shell script called '''hello'''<br><br>Let's run shell scripts <u>with</u> and <u>without</u> a '''she-bang''' line at the top of your shell script.<br><br>
# Add the following line to the <u>bottom</u> of the file ('''copy''' and '''paste''' to prevent ''errors''):<br><span style="font-family:courier;font-weight:bold;">echo "The current shell you are using is: $(ps -o cmd= -p $$|cut -d' ' -f1)"</span><br><br>'''FYI:''' This command displays the '''name''' of the ''shell'' that the shell script is running in.<br>The command within <span style="font-family:courier;font-weight:bold;">$( )</span> uses a technique known as '''command substitution'''.<br><br>
# Issue the following linux Linux command to change to the '''Bourne Shell''':<br><span style="color:blue;font-weight:bold;font-family:courier;">sh</span><br><br>You should notice your shell prompt changed that indicates that you are in a different shell.<br><br>[[Image:hello2.png|thumb|right|275px|Changing the Bourne shell and running shell script '''without''' a '''She-bang''' line.]]# Issue the following linux Linux command to run your shell script in the ''Bourne Shell'':<br><span style="color:blue;font-weight:bold;font-family:courier;">./hello</span><br><br>You should see that you are currently running the shell script "'''sh'''" that represents the '''Bourne shell'''.<br><br>'''NOTE:''' Due to the fact that shells (and their features) have '''evolved''' over a period of time,<br>an error may occur if you include a ''NEWER'' shell feature (e.g. ''Bash Shell'') in your shell script,<br>but run it in an ''OLDER'' shell (e.g. ''Bourne Shell'').<br><br>You can add a '''special comment''' to the BEGINNING of the <u>FIRST line</u> of your shell script to<br>'''force''' it to run in the shell you want (for example: the Bash shell).<br><br>
# Edit your '''hello''' shell script using a text editor.<br><br>
# '''Insert''' the following line at the '''beginning''' of the '''first''' line of your hello file:<br><span style="font-family:courier;font-weight:bold;">#!/bin/bash</span><br><br>This is referred to as a '''she-bang line'''. It forces this script to be run in the '''Bash Shell'''.<br>When your Bash Shell script finishes execution, you are returned to your current shell that you are using<br>(which in our case in Matrix, is still the Bash shell).<br><br>[[Image:hello3.png|thumb|right|275px|Changing the Bourne shell and running shell script '''with''' a '''She-bang''' line (forcing script to run in the '''Bash''' shell).]]
# '''Save''' your editing changes and '''exit''' your text editor.<br><br>
# While in the Bourne shell, issue the following linux Linux command:<br><span style="color:blue;font-weight:bold;font-family:courier;">./hello</span><br><br>You should notice that the shell name is running in the '''Bash shell'''.<br><br> # It is a good idea to rename your shell script to include an '''extension''' to<br>explain that this is '''Bash Shell script''' file (referred to as a "''portable Bash shell script''"). <br>Issue the following linux Linux command to rename your shell script file:<br><span style="color:blue;font-weight:bold;font-family:courier;">mv hello hello.bash</span><br><br>
# Run your renamed shell script for confirmation by issuing:<br><span style="color:blue;font-weight:bold;font-family:courier;">./hello.bash</span><br><br>
# Enter the following linux Linux command to '''exit''' the ''Bourne shell'' and return to your ''Bash shell'':<br><span style="color:blue;font-weight:bold;font-family:courier;">exit</span><br><br>Let's use some '''ENVIRONMENT variables''' in our Bash Shell script.<br><br>
# Use a text editor to edit the shell script called '''hello.bash'''<br><br>
# Add the following lines to the <u>bottom</u> of the file:<br><span style="font-family:courier;font-weight:bold;">echo<br>echo "The current directory location is: $PWD"<br>echo "The current user home directory is: $HOME"<br>echo</span><br><br>
# Save your editing changes and exit your text editor.<br><br>
# Run your renamed shell script for confirmation by issuing:<br><span style="color:blue;font-weight:bold;font-family:courier;">./hello.bash</span><br><br>Take time to view the output and the values of the environment variables.<br><br>
# Issue the following linux Linux command to add your current directory to the '''PATH''' environment variable:<br><span style="color:blue;font-weight:bold;font-family:courier;">PATH=$PATH:.</span><br><br>[[Image:hello4.png|thumb|right|330px|Running <u>modified</u> '''hello.bash''' Bash shell script by entering by '''filename''' only.]]# Issue the following linux Linux command to confirm that the current directory '''"."''' has been added to the '''PATH''' environment variable:<br><span style="color:blue;font-weight:bold;font-family:courier;">echo $PATH</span><br><br>
# Issue the following to run your Bash shell script just by name:<br><span style="color:blue;font-weight:bold;font-family:courier;">hello.bash</span><br><br>Did your Bash shell script run?<br><br>
# Exit your Matrix session, and log back into your Matrix session.<br><br>