# Chapter 4. Interacting with Your Environment

#### Contents:

Basics of Setting the Prompt
Static Prompts
Dynamic Prompts
Simulating Dynamic Prompts
C-Shell Prompt Causes Problems in vi, rsh, etc.
Faster Prompt Setting with Built-ins
Multiline Shell Prompts
Session Info in Window Title or Status Line
A "Menu Prompt" for Naive Users
Highlighting and Color in Shell Prompts
Right-Side Prompts
Show Subshell Level with $SHLVL
What Good Is a Blank Shell Prompt?
dirs in Your Prompt: Better Than $cwd
External Commands Send Signals to Set Variables
Preprompt, Pre-execution, and Periodic Commands
Running Commands When You Log Out
Running Commands at Bourne/Korn Shell Logout
Stop Accidental Bourne-Shell Logouts

## 4.1. Basics of Setting the Prompt

The prompt displayed by your shell is contained in a shell variable (Section 35.9) called prompt in C-type shells and PS1 in Bourne-type shells. As such, it can be set like any other shell variable.

There are two or three ways to set a prompt. One is a static prompt (Section 4.2) that doesn't change during your login session (as you change directories, as the time of day changes, etc.). Some shells let you set a dynamic prompt (Section 4.3) string that is interpreted by the shell before each prompt is printed. Even on shells that don't interpret prompt strings dynamically, you can simulate a dynamic prompt (Section 4.4) by changing the prompt string automatically.[13]

> [13]I haven't seen prompts described this way before. I invented the terms static prompt and dynamic prompt to make them easier to talk about.

Depending on your shell's capabilties, you can use or combine those three techniques -- and those found in the rest of this chapter -- to do a lot. But, of course, you don't want to type that prompt-setting command every time you log in. So after you've perfected your prompt on the command line, store it in the correct shell setup file (Section 3.3): use the file that's read by interactive shells or add an interactive shell test to your setup file. (Setting the prompt in noninteractive shells is pointless -- and it can even cause problems (Section 4.5).)

--JP, TOR, and SJC

Copyright © 2003 O'Reilly & Associates. All rights reserved.