The Shell

All shells have a command prompt ”the prompt usually tells the user which shell is currently being used, the user who owns the shell, and/or the current working directory. For example, the following prompt

 # 

usually indicates that the current user has superuser privileges. Shell prompts are completely customizable ”the default for bash is just the name of the shell:

 bash-2.04$ 

When you start a new terminal window from within the CDE, a shell is automatically spawned for you. This will be the same shell that is specified in your /etc/passwd entry:

 apache:x:1003:10:apache user:/usr/local/apache:/usr/local/bin/bash 

In this case, the apache user has the bash shell set as default. To be a valid login shell, /usr/local/bin/bash must also be included in the shells database (stored in the file /etc/shells ).

If the default shell prompt is not to your liking, you can easily change its format by setting two environment variables ” PS1 and PS2 . Environment variables are covered in the Setting Environment Variables section later in this chapter, but the Solaris environment is equivalent to that found in Linux and Windows NT. For example, to set the prompt to display the username and host, you would use the following command:

 PS1='\u@\H>> '; export PS1 

The prompt displayed by the shell would then look like this:

 oracle@db>> 

Many users like to display their current username, hostname, and working directory, which can be set using the following command:

 PS1='\u@\H:\w>> '; export PS1 

When executed, this shell prompt is changed to the following

 oracle@db:/usr/local>> 

where oracle is the current user, db is the hostname, and /usr/local is the current working directory. A list of different customization options for shell prompts is given in Table 10-1.

Table 10-1: Environment Variable Setting for Different Command Prompts Under Bash

Setting

Description

Output

\a

ASCII beep character

beep

\d

Date string

Wed Sep 6

\h

Short hostname

www

\H

Full hostname

www.paulwatters.com

\s

Shell name

bash

\t

Current time (12- hour format)

10:53:44

\T

Current time (24-hour format)

10:53:55

\@

Current time ( a.m./p.m. format)

10:54 a.m.

\u

Username

root

\v

Shell version

2.03

\W

Shell version with revision

2.03.0

\!

Command history number

223

\$

Privilege indicator

#

\u\$

Username and privilege indicator

root#

\u:\!:\$

Username, command history number, and privilege indicator

root:173:#

At the shell prompt, you enter commands in the order in which you intend for them to be executed. For example, to execute the admintool from the command prompt, you would type this command:

 oracle@db:/usr/sbin>> ./admintool 

The ./ in this example indicates that the admintool application resides in the current directory ”you could also execute the application with the following command, using its complete path :

 oracle@db:/usr/sbin>> /usr/sbin/admintool 

The admintool window would then appear on the desktop, assuming that you re using a terminal window to execute a shell. Once the shell is executing a command in the foreground, like admintool, no other commands can be executed. However, by sending a command process into the background, you can execute more than one command in the shell. You can send a process into the background immediately by adding an ampersand (&) to the end of the command line:

 oracle@db:/usr/sbin>> ./admintool & 

Or, once a command has been executed, you can suspend it by pressing CTRL-Z , and then send it into the background by using the command bg :

 oracle@db:/usr/sbin>> ./admintool ^Z[1] + Stopped (SIGTSTP)        admintool oracle@db:/usr/sbin>> bg [1] admintool& oracle@db:/usr/sbin>> 

The application name is displayed along with the job number. You can bring an application back into the foreground by using the following command:

 oracle@db:/usr/sbin>> fg admintool 

This will bring job number 1 back into the foreground by default. However, if you had multiple jobs suspended , you would need to specify a job number with the fg command:

 oracle@db:/usr/local/bin>> ./netscape ^Z[2] + Stopped (SIGTSTP)        netscape oracle@db:/usr/sbin>> bg [2] netscape& oracle@db:/usr/sbin>> fg netscape 
Tip  

You can obtain a list of all running jobs in the current shell by typing the following command:

 $ jobs [2] +  Running                 ./netscape& [1] -  Running                 admintool& 
 
 
   


Sun Certified Solaris 9.0 System and Network Administrator
Sun Certified Solaris(tm) 9 System and Network Administrator All-in-One Exam Guide
ISBN: 0072225300
EAN: 2147483647
Year: 2003
Pages: 265
Authors: Paul Watters

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net