Before looking at the newer, more advanced ash and dash shells, it’s a good idea to understand what the original ash shell looked like. Even though you may not run into it in desktop or server Linux distributions, it still lives on today in some embedded Linux distributions, so it’s good to know the limitations of the shell.
The Original ash command line parameters
The original ash shell uses command line parameters to control the behavior of the shell. Table below lists the command line parameters available in the original ash shell.
You can specify the command line parameters in any order, either individually, or together after a single dash.
The -e command line option allows you to force the ash shell to exit immediately if a command produces an error. This is a handy feature when trying to troubleshoot your shell scripts:$ cat test1
The cp command attempts to copy a file that doesn’t exist, so it generates an error. When the ash shell detects the error, it immediately exits, causing the script to stop.
The -f command line option allows you to disable wildcard expansion in the shell. The shell treats the standard wildcard characters as normal characters:$ ash -f
In this example, the shell is looking for a file called *.txt, instead of matching any file that ends with .txt.
The -n command line option is not used in interactive shells, but if you use it in your shell script , the ash shell will scan the script, but not actually run it. Here’s a quick example:$ cat test2
The shell doesn’t execute the good echo statement, since the bad echo statement contained an error. However, the shell does indicate that there’s an error in the bad echo statement line, so at least you know where to look for the problem (the error message even tells you the line number). This is a great way to quickly troubleshoot coding problems in your ash shell scripts without having to actually run through the entire script line by line.
The original ash built-in commands
Since the original ash shell was designed to be lightweight, it contains just a subset of the Bourne shell built-in commands. The trick is knowing which commands you can use and which ones you can’t. Table below shows the built-in commands available in the original ash shell.
As you can see from Table below, the ash shell contains some of the bash commands that you’re used to, but there are quite a few things missing. The original ash shell doesn’t provide many bells and whistles in its command environment. It just provides a bare-bones environment for running programs. Of course, this feature is what makes it so popular in low-memory operations, such as embedded Linux devices. Table The Original ash Shell Built-In Commands
Let’s take a look at a few of the basic ash shell built-in commands that we haven’t already explored in the bash shell.
The bltin command
You can use the bltin command when you want to run a built-in command in situations when there’s another command available with the same name. When you’re running shell scripts, if there’s more than one script with the same name, you can just specify the full pathname to select the proper script. With a built-in command, you can’t do that.
To solve this problem, the ash shell provides the bltin command (its name is changed to builtin in the bash shell). This forces the ash shell to look for a built-in command using the specified name instead of a shell script.
The hash command
The ash shell maintains a table of all commands you enter while in the shell process. The ash shell then uses this table (called the hash table) to quickly retrieve the location of recently used commands, instead of having to traverse all of the directories in the PATH environment variable looking for them.
You can display the current hash table just by using the hash command by itself:$ hash
The hash table contains the commands starting with the most recently used command. As you can see from the example, it also remembers the built-in shell commands that you execute.If you use the cd command to change your directory, the shell places an asterisk next to any commands in the hash table that use a pathname:$ cd
The asterisk means that the pathname may no longer be valid due to the change of directory since the last time you executed the command.You can use the -r parameter to remove individual items from the hash table:$ hash -r /bin/ls
Sometimes you’ll run into the problem of a command that’s been moved, but the shell doesn’t realize it and attempts to run the command from the location specified in the hash table. By removing the hash table entry for the command you force the shell to re-find the command.
The -v parameter tells the hash command to display the full location where it finds a command that you specify:$ hash -v cd
This example also demonstrates that, if the command is a built-in shell command, the hash command will identify it as such.
The lc command
The lc command is a cute little utility that can save you some typing on the command line. It stands for last command, and its job is to execute the last command that you ran on the command line, including any command line arguments. Here’s a few examples of using the lc command:$ pwd
The lc command works no matter what the last command was, whether it was a built-in shell command, an application program, or a shell script. As you can see from the example, the lc command also duplicates any command line arguments you supplied with the original command.
The ash shell files
Just like the bash shell, the ash shell uses default files to control its start environment. The default files allow you to define shell environment variables and settings when using the ash shell in an interactive mode.
There are three files that the ash shell uses:
If the ash shell detects that it’s used as a login shell, it first executes the contents of the /etc/ profile file. This is the place to define system-wide environment variables that are set for all interactive users.
Next, the ash shell searches the contents of the user’s HOME directory for a file named .profile. If it exists, the ash shell executes it. Finally, the ash shell checks if the ENV environment variable has been set (either before the ash shell is run or as part of the login script). If this variable is set, the ash shell attempts to execute the contents of the filename specified by the variable.
Shell Scripting Related Interview Questions
|Perl Scripting Interview Questions||Python Interview Questions|
|Linux Interview Questions||Linux Embedded systems Interview Questions|
|AWK Interview Questions||BioPerl Interview Questions|
|Sed (Stream Editor) Interview Questions||Advanced Linux Interview Questions|
|Unix/Linux Interview Questions||Unix Shell Scripting Interview Questions|
Shell Scripting Tutorial
Starting With Linux Shells
Getting To The Shell
Basic Bash Shell Commands
More Bash Shell Commands
Using Linux Environment Variables
Basic Script Building
Understanding Linux File Permissions
Working With Editors
Using Structured Commands
More Structured Commands
Handling User Input
Adding Color To Scripts
Introducing Sed And Gawk
The Ash Shell
The Tcsh Shell
The Korn Shell
The Zsh Shell
Using The Web
Using A Database
Shell Script For Administrators
All rights reserved © 2018 Wisdom IT Services India Pvt. Ltd
Wisdomjobs.com is one of the best job search sites in India.